【问题标题】:How to print a defined string macro in C?如何在 C 中打印定义的字符串宏?
【发布时间】:2012-03-16 08:51:21
【问题描述】:

如果之前有人问过这个问题,我提前道歉,但我无法在 SO 上找到任何与此特别相关的内容。

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

#define STR "somestring"

当我对该宏执行printfputs 时,我得到一个

error: expected ')' before ';' token

其实很简单:

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

    puts( STR ); //error

    return 0;
}

这可能吗?如果有,怎么做?

【问题讨论】:

  • 它工作正常:ideone.com/jN8nQ。问题一定出在其他地方。
  • 你有#define STR "somestring";吗?
  • (在定义之后我打赌;
  • @Mat 你应该得到一个棒棒糖 :) 而且,我最诚挚的道歉,伙计们。
  • 当您没有发布您实际使用的确切代码时会发生这种情况。

标签: c string macros printf c-preprocessor


【解决方案1】:

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

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

作为一个实验,尝试选择一个不同的名称,比如STR_TEST,看看是否可行。如果是这样,那么您知道宏是在其他地方定义的

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

【讨论】:

  • 它确实以; 结尾。检查问题帖子的 cmets。
猜你喜欢
  • 1970-01-01
  • 2017-01-19
  • 2018-09-09
  • 1970-01-01
  • 2010-10-09
  • 1970-01-01
  • 1970-01-01
  • 2021-05-31
  • 1970-01-01
相关资源
最近更新 更多