如果之前已经提出要求,我会提前道歉,但是我无法在SO上找到任何与具体相关的内容。
基本上,假设我有一个简单的宏:
#define STR "somestring"
当我在该宏上执行printf
或puts
时,我会得到一个
error: expected ')' before ';' token
这简直就像:
int main( int argc, char** argv )
{
puts( STR ); //error
return 0;
}
这可能吗?如果是这样,怎么样?
答案 0 :(得分:2)
问题很可能是在程序中的某个时刻重新定义了STR
。以下代码编译得很好。
#define STR "something"
int _tmain(int argc, _TCHAR* argv[])
{
puts(STR);
return 0;
}
作为实验尝试选择其他名称,例如STR_TEST
,看看是否有效。如果是这样,那么你知道宏在其他地方定义了
另一个可能的错误来源是#define
行以;
结尾(不应该)