2013-02-08 88 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; 
} 

你需要捕捉系统()调用的返回值,并用它