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

标签 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;
}

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

最佳答案

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

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

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

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

关于c - 如何在 C 中打印定义的字符串宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9455583/

相关文章:

c# - 在 C# 中将字符串数组转换为简单字符串,反之亦然

python - 在 Python 中将字符串转换为 'unit' 对象

c++ - 是否有宏或规定来检查代码行是否在类中?

C++:有没有办法让这个反射宏与 IntelliSense 一起工作?

c++ - C 和 C++ 中的宏定义

c - syntastic 叛变 : how to disable checking files in/usr/include/*. h

c - 通过 C 套接字发送任何类型的文件

c - 连接到数据库的 Pro C 代码给出段错误

java - Java 的字符串数组

我们可以用 GCC 的内联函数来做到这一点吗?