3 回答
TA贡献1966条经验 获得超4个赞
宏名称只能由字母数字字符和下划线,即'a-z','A-Z','0-9',和'_',和第一个字符不应该是一个数字。一些预处理器还允许使用美元符号字符'$',但您不应该使用它。不幸的是,由于我没有C标准,所以我无法引用它。
从GCC文档中:
预处理令牌分为五大类:标识符,预处理数字,字符串文字,标点符号等。一个 标识符是相同的C中的标识符:字母,数字,或者下划线的任意序列,其以字母或下划线开始。C的关键字对预处理器没有任何意义;它们是普通标识符。例如,您可以定义名称为关键字的宏。可以视为预处理关键字的唯一标识符是 defined。请参阅已定义。
对于使用C预处理程序的其他语言,大多数情况都是如此。但是,即使在预处理器中,C ++的一些关键字也很重要。请参阅C ++命名运算符。
在1999 C标准中,标识符可以包含不属于“基本来源字符集”的字母,具体取决于实现方式(例如带重音的拉丁字母,希腊字母或中文表意文字)。这可以通过扩展字符集或'\u'和'\U'转义序列来完成。此功能在GCC中的实施是实验性的;此类字符仅在'\u'和'\U'形式中接受, 并且仅在 -fextended-identifiers使用时使用。
作为扩展,GCC视为'$'字母。这是为了与某些系统(例如VMS)兼容,该系统'$' 通常在系统定义的函数和对象名称中使用。'$'在严格符合模式下不是字母,或者如果您指定了-$选项。请参阅调用。
TA贡献1806条经验 获得超8个赞
为变量名称指定有效标识符的相同规则适用于宏名称,但宏可能与关键字具有相同的名称。标识符名称中的有效字符包括digits
,non-digits
并且不能以数字开头。 non-digits
包括大写字母AZ,小写字母az,下划线和任何实现定义的字符。
- 3 回答
- 0 关注
- 775 浏览
添加回答
举报