2012-02-26 73 views
1

我提前道歉,如果这之前已经问过,但我一直没能找到有关,所以,只要它涉及专门这一点。如何在C中打印定义的字符串宏?

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

#define STR "somestring"

当我这样做对宏printfputs,我得到一个

error: expected ')' before ';' token 

它的字面意思一样简单:

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

    puts(STR); //error 

    return 0; 
} 

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

+1

它工作正常结束:http://ideone.com/jN8nQ 。问题必须存在于其他地方。 – 2012-02-26 18:00:50

+2

难道你有'#define STR“somestring”;'? – cnicutar 2012-02-26 18:01:03

+1

(我打赌在';'后确定) – Mat 2012-02-26 18:01:22

回答

2

的问题是最有可能的是STR在程序中的某一点重新定义。下面的代码编译得很好。

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

作为一个实验尝试选择一个不同的名字,说STR_TEST,看看是否可行。如果是这样,那么你知道宏别处定义

错误的另一个可能来源就是#define线在;(它不应该)

+0

它确实以';'结尾。检查问题文章的评论。 – zeboidlund 2012-02-26 18:34:54