0

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

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

4

3 回答 3

2

采用:

#define CLEAR system("clear")

不是

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

您收到错误是因为您的宏调用被替换为:

"system(\"clear\")";

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

0;   // valid but pointless
于 2013-02-08T16:37:31.790 回答
0
#define CLEAR system("clear")

并不是

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

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

因此,如果您以这种方式定义宏:

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

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

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

}

您可以看到编译器生成的代码(预处理器代码)gcc -E

于 2013-02-08T16:37:22.900 回答
0

尝试改变你的主要功能:

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

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

于 2013-02-08T16:39:21.533 回答