2016-03-06 39 views
0

由於我們只在C中使用'include'和'define',在程序開始時也使用'include'和'define'我們是否仍將它們視爲關鍵字?我們可以聲明一個名爲include或define的變量嗎?'include'和'define'是否也被認爲是C中的關鍵字?

int include, define; 

這是錯誤的嗎?事情是,根據我的說法,這不應該是錯誤的。我嘗試了這一點,它不會給我任何錯誤。然而,我的大學進行了一個測驗,他們說這兩個聲明是錯誤的。

+3

你嘗試了嗎? –

+1

[** C **中保留的關鍵字](http://en.cppreference.com/w/c/keyword)。你確實問過你的大學?爲什麼這是錯誤的,對吧?如果是這樣,用他們的回答更新你的問題;如果沒有,爲什麼不呢? – WhozCraig

+0

他們不是關鍵字。而且他們只能在開始時給出散列(#)的時候執行預處理任務。 – MASh

回答

4

不,它們是預處理指令#line#error。他們不被視爲關鍵字。你可以有很多變數,如int lineint error

+0

正是!請參閱編輯。我會要求我的大學重新檢查。 –

1

按照該C11規範,章§6.4.1,關鍵字includedefine沒有出現在保留關鍵字列表。所以他們是而不是的關鍵字。

FWIW的關鍵字名單,因爲它出現,

關鍵字

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 
0

的一個沒有他們不是如int關鍵詞,焦炭,如果雖然等等,但它們是以散列符號「#」開頭的預處理器,這些預處理器用於鏈接,定義等目的 欲瞭解更多信息,請參閱: https://en.wikipedia.org/wiki/C_preprocessor

0

沒有關鍵詞,而是includedefineC預處理指令

報價:

C預處理程序修改源文件移交到編譯器之前,允許條件編譯使用> #ifdef,使用#define定義常量,包括帶#include的頭文件以及使用內置宏,如FILE。 >此頁面列出了預處理指令,或命令的預處理器,可用:


FWIW:

有另一個prepocessors ...

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

    您應該包含引號的來源。另外,有些指令不是ISO C. – edmz

    相關問題