是'包括'并且'定义'也被认为是C中的关键词?

时间:2016-03-06 07:36:51

标签: c keyword

因为我们使用' include'并且'定义'只有在C中的#之后,这也是在程序开始时;我们仍然将它们视为关键词吗?我们可以声明名为include或define的变量吗?

int include, define;

这是错的吗?问题是,根据我的说法,这不应该是错的。我尝试了这个,它没有给我任何错误。但是,我的大学进行了一次测验,他们说这两个声明是错误的。

4 个答案:

答案 0 :(得分:4)

不,它们是预处理指令,如#line#error。它们不被视为关键字。您可以拥有很多变量,例如int lineint error

答案 1 :(得分:1)

根据C11规范,章节§6.4.1,关键字includedefine未出现在保留关键字列表中。所以他们是关键字。

FWIW,关键字列表,如图所示

  

keyword:

之一
auto ∗
break
case
char
const
continue
default
do
double
else
enum
extern
float
for
goto
if
inline
int
long
register
restrict
return
short
signed
sizeof
static
struct
switch
typedef
union
unsigned
void
volatile
while
_Alignas
_Alignof
_Atomic
_Bool
_Complex
_Generic
_Imaginary
_Noreturn
_Static_assert
_Thread_local

答案 2 :(得分:0)

不,它们不是像int,char,if,while等关键字,但它们是以哈希符号“#”开头的预处理器。这些预处理器用于链接,定义等目的 有关更多信息,请参阅, https://en.wikipedia.org/wiki/C_preprocessor

答案 3 :(得分:0)

没有关键字,而是includedefine C预处理程序指令

引用:

  

C预处理器在将源文件交给编译器之前修改源文件,允许使用> #ifdef进行条件编译,使用#define定义常量,包括带有#include的头文件,以及使用内置宏,例如 FILE 即可。 >此页面列出了可用的预处理程序指令或预处理程序的命令:

FWIW:

还有另外一位预处理员......

  • #define
  • #undef
  • #if
  • #ifdef
  • #ifndef
  • #error
  • FILE
  • LINE
  • DATE
  • TIME
  • TIMESTAMP
  • pragma
  • # macro operator
  • ## macro operator