用'。'定义常量代币

时间:2014-01-20 17:35:50

标签: c constants

如果我定义这样的常量,为什么会出错?

#‎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

为什么我不能用'。'定义常量。 ?

4 个答案:

答案 0 :(得分:5)

因为规范不允许。

,不允许使用句号和大多数其他特殊字符(_除外)。

  

标识符是一系列非数字字符(包括下划线_,小写和大写拉丁字母以及其他字符)和数字,它们指定6.2.1中描述的一个或多个实体。小写和大写字母是不同的。标识符的最大长度没有特定限制。

来自C99规范的§6.4.2.1。

答案 1 :(得分:2)

因为.不能在变量/标识符名称中使用。

enter image description here

答案 2 :(得分:2)

因为宏名称必须是标识符,并且标识符不能包含.字符。

答案 3 :(得分:2)

因为宏名称必须是标识符,标识符只能包含下划线,大写和小写字母和数字。 Dot用于结构元素。