如何在C中打印已定义的字符串宏?

时间:2012-02-26 17:58:53

标签: c string macros printf c-preprocessor

如果之前已经提出要求,我会提前道歉,但是我无法在SO上找到任何与具体相关的内容。

基本上,假设我有一个简单的宏:

#define STR "somestring"

当我在该宏上执行printfputs时,我会得到一个

error: expected ')' before ';' token

这简直就像:

int main( int argc, char** argv )
{

    puts( STR ); //error

    return 0;
}

这可能吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:2)

问题很可能是在程序中的某个时刻重新定义了STR。以下代码编译得很好。

#define STR "something"
int _tmain(int argc, _TCHAR* argv[])
{
    puts(STR);
    return 0;
}

作为实验尝试选择其他名称,例如STR_TEST,看看是否有效。如果是这样,那么你知道宏在其他地方定义了

另一个可能的错误来源是#define行以;结尾(不应该)