如果我定义这样的常量,为什么会出错?
#define F.NAME "First"
#define L.NAME "Second"
printf("%s %s\n", F.NAME, L.NAME);
但如果我这样做,那么每件事都会顺利进行
#define F_NAME "First"
#define L_NAME "Second"
printf("%s %s\n", F_NAME, L_NAME);
我得到的错误是。
Warning: missing white space after the macro name
Error: expected expressions before '.' token
为什么我不能用'。'定义常量。 ?
答案 0 :(得分:5)
因为规范不允许。
,不允许使用句号和大多数其他特殊字符(_
除外)。
标识符是一系列非数字字符(包括下划线_,小写和大写拉丁字母以及其他字符)和数字,它们指定6.2.1中描述的一个或多个实体。小写和大写字母是不同的。标识符的最大长度没有特定限制。
来自C99规范的§6.4.2.1。
答案 1 :(得分:2)
因为.
不能在变量/标识符名称中使用。
答案 2 :(得分:2)
因为宏名称必须是标识符,并且标识符不能包含.
字符。
答案 3 :(得分:2)
因为宏名称必须是标识符,标识符只能包含下划线,大写和小写字母和数字。 Dot用于结构元素。