2013-02-08 89 views
0

我想根據使用的操作系統定義一個常量。
這樣:在#ifdef中定義常量C

#include <stdio.h> 

#ifdef _Win32  //Used for system("cls") command 
#include <process.h> 
#define CLEAR "system(\"cls\")" 
#endif 

#ifdef __APPLE__ 
#define CLEAR "system(\"clear\")" 
#endif 

int main() 
{ 
    CLEAR; 
} 

的Xcode給我一個錯誤,指出表達結果未使用在
#define CLEAR "system(\"clear\")和主函數內。

我在Mac上。

+0

耶可愛;叉一個過程,以清除屏幕.... – trojanfoe 2013-02-08 16:39:58

回答

2

使用產生:

#define CLEAR system("clear") 

#define CLEAR "system(\"clear\")" 

你得到的錯誤,因爲您的宏調用與取代:

"system(\"clear\")"; 

這是一個無用的表達式語句(表達式是這裏的字符串),例如像:

0; // valid but pointless 
+0

Doh!萬分感謝! – clockworx 2013-02-08 16:40:35

0
#define CLEAR system("clear") 

和不

#define CLEAR "system(\"clear\")" 

編譯器將創建一個新的C代碼(稱爲預處理器代碼),其中將通過它的內容替換宏名稱。

,所以如果你用這種方式定義宏:

#define CLEAR "system(\"clear\")" 

由編譯器生成你會在新的代碼(預處理器代碼)獲得:

int main() 
{ 
    "system(\"clear\")"; 

} 

你可以看到代碼由編譯器(預處理器代碼)與gcc -E

0

嘗試改變您的主要功能,如:

int main() 
{ 
    int rc; 
    rc = CLEAR; 
    return rc; 
} 

你需要捕捉系統()調用的返回值,並用它