在C中定义#ifdef内的常量

时间:2013-02-08 16:36:23

标签: c macos constants

我想根据使用的操作系统定义一个常量 就这样:

#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上。

3 个答案:

答案 0 :(得分:2)

使用:

#define CLEAR system("clear")

不是

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

您收到错误,因为您的宏调用已替换为:

"system(\"clear\")";

这是一个无用的表达式语句(表达式是这里的字符串),例如:

0;   // valid but pointless

答案 1 :(得分:0)

#define CLEAR system("clear")

而不是

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

编译器将创建一个新的C代码(称为预处理器代码),其中将用其内容替换宏名称。

所以如果你用这种方式定义宏:

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

您将获得编译器生成的新代码(预处理器代码):

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

}

您可以使用gcc -E

查看编译器生成的代码(预处理器代码)

答案 2 :(得分:0)

尝试改变你的主要功能:

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

您需要捕获system()调用的返回值并使用它