重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
宏定义的名称,是C语言标识符的一种,和函数名,变量名的命名规则是一样的,只允许使用数字,字母,下划线,且不能以数字开头。
我们提供的服务有:成都网站制作、成都做网站、外贸营销网站建设、微信公众号开发、网站优化、网站认证、昭化ssl等。为超过千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的昭化网站制作公司
所以宏名是不可以有括号和分号的。
另外,在C语言编程中,一般约定宏名用大写字母加下划线组成,而避免使用小写字母。这一条并非是C语言规范强制要求,而是编程时的一种习惯。
也就是说,宏定义my_print是合法的,可以被C语言编译器接收,但一般书写习惯更倾向于写作MY_PRINT。
这样约定的好处是,当遇见全部为大写字母和下划线组成的标识符时,就可以认作是宏定义了。
这个加分号是因为它是一个语句啊
即BLUE,RED是分别一个语句啊,当然要加分号,这不是#define后加分号
是宏定义展开后加分号
最后一个没加分号,是因为GREEN;后加了分号,所以没加
宏定义要看你怎么用了。
例如#define NEWLINE printf("\n")
你在用的时候就要把NEWLINE当作是一条语句或函数后面要加分号才可以。
若#define NEWLINE printf("\n");
那你在使用这个宏的时候只要写NEWLINE就可以了。
PS.如果你宏定义中有分号,使用的时候加不加分号都行,因为多的那个分号可以认为是空语句。但是宏定义没有加分号,使用宏的时候就要记着加分号。所以你测试时只把宏定义的分号去掉了,肯定会报某个语句之前parse错误
分号是C语言一条语句结束的标识,宏定义可以是一条完整的语句,也可以是一条语句的一部分,还可以是多条语句组成。所以不一定要用分号结束,而是要根据实际情况具体判断是否要用分号。
在定义宏时,如果一行写入的数据太长,会影响阅读,这时可以在需要换行的地方加入反斜杠(\),然后在\后换行。
比如
#define
output(x)
printf("the
var's
\
value
is
%d",\
x)
和写作
#define
output(x)
printf("the
var's
value
is
%d",
x)
是没有区别的。