格里芬弹跳,桂林北站,因特达crm
#define width 1920 #define height 1080
width代表1920,height 代表1080 ,
编译器在处理这个代码之前会对width 和height 进行替换
define可以像函数那样接受一些参数,类似于函数模板
int sum = sum(10, 20)
3、宏的单行定义
在#define中,标准只定义了#和##两种操作。#用来把参数转换成字符串,##则用来连接两个前后两个参数,把它们变成一个字符串。
#define conn(x,y) x##y #define tochar(x) #@x #define tostring(x) #x conn(12, 34) --> 1234
在开发当中,我们可能会大量的写一些重复的,甚至具有“危险”的代码,用宏定义#define,往往可以简化代码。define可以替代多行的代码,例如mfc中的宏定义(非常的经典,虽然让人看了恶心)
#define mydefine(arg1,arg2,...) do { \ printf("hello\n");\ printf("world\n");\ printf(arg1);\ printf("\n");\ printf(arg2);\ printf("\n");\ }while(0) int main(int argc, char const *argv[]) { mydefine("owen", "chan"); }
#ifdef windows ...... ...... #endif #ifdef linux ...... ...... #endif
可以在编译的时候通过#define设置编译环境。
#define [macroname] [macrovalue] //定义宏 #undef [macroname] //取消宏
由于头文件包含可以嵌套,那么c文件就有可能多次包含同一个头文件,就可能出现重复定义的问题的。
通过条件编译开关来避免重复包含(重复定义)例如
#ifndef __headerfilexxx__ #define __headerfilexxx__ … //文件内容 … #endif
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论