之間的區別我在編譯我的程序,它將在linux gcc 4.4.1 C99上運行。#if defined(WIN32)和#ifdef(WIN32)
我只是把我的#defines分開,將在Windows或Linux上編譯的代碼。但是,我得到了這個錯誤。
error: macro names must be identifiers.
使用此代碼
#ifdef(WIN32)
/* Do windows stuff
#elif(UNIX)
/* Do linux stuff */
#endif
然而,當我改變了這個錯誤是固定的:
#if defined(WIN32)
/* Do windows stuff
#elif(UNIX)
/* Do linux stuff */
#endif
我只是想知道,爲什麼我得到的錯誤,爲什麼#define語句是不同的?
非常感謝,
是的,但你也可以級聯的#ifdef UNIX與WIN32的#ifndef,並獲得相同的靈活性(而不是可讀的,我同意) – jpinto3912 2009-11-11 11:42:57
@ jpinto3912但如果只有他們只是變得更加多毛用''|| – Aidiakapi 2016-01-05 18:18:51
從頭開始'#if defined(NAME)'並避免創建'#ifdef'語句。 – Andy 2018-02-20 07:47:24