对于以下代码,我们可以将'#define'视为令牌吗?
#define int char
main(){
int i=65; // i is initialized
printf("sizeof(i)=%d",sizeof(i));
}
答案 0 :(得分:1)
ISO C标准明确地调出了存在的令牌,例如c11 6.4
:
token:
keyword
identifier
constant
string-literal
punctuator
preprocessing-token:
header-name
identifier
pp-number
character-constant
string-literal
punctuator
each non-white-space character that cannot be one of the above
所以,不,#define
不是一个令牌,它是两个预处理令牌,#
和define
标识符。< / p>
根据6.4.2.1
标识符,其标识符基本为[_A-Za-z][_A-Za-z0-9]*
。