我们可以将预处理器指令视为令牌吗?
Can we consider preprocessor directives as token?
对于下面的代码,我们可以把'#define'当作token吗?
#define int char
main(){
int i=65; // i is initialized
printf("sizeof(i)=%d",sizeof(i));
}
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
标识符。
它是根据 6.4.2.1
的标识符,基本上定义为 [_A-Za-z][_A-Za-z0-9]*
。
对于下面的代码,我们可以把'#define'当作token吗?
#define int char
main(){
int i=65; // i is initialized
printf("sizeof(i)=%d",sizeof(i));
}
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
标识符。
它是根据 6.4.2.1
的标识符,基本上定义为 [_A-Za-z][_A-Za-z0-9]*
。