c - 宏前的 "#"是什么意思?

标签 c

<分区>

我需要一些关于这段代码的解释

#define TRACE_PRINT5 (F, X)   fprintf(stderr, "%s" STRGY(__LINE__) ":(" #X "): ", X);

我知道开头 # 的作用,但我不明白 ":("#X"): "

的作用

最佳答案

这叫做 "stringizing" ;当您添加 # 时,宏会将参数视为字符串(例如,获取传入的事物的名称,而不是值。)

例如,如果你写:

const char* someString = "abc";
TRACE_PRINT5(something, someString); // let's assume this is on line 10 for __LINE__

应该扩展为:

const char* someString = "abc";
fprintf(stderr, "%s" "10" ":(" "someString" "): ", "abc");

(假设 STRGY 宏只是将其参数转换为字符串。)

关于c - 宏前的 "#"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55380080/

相关文章:

c - 建立多个连接时如何在C中设置套接字超时?

c - 在 C 中为结构指针赋值时遇到问题?

c - 尝试在 C 中复制字符串的一部分时的有趣行为

c: 在编译时将 ipv6 地址转换为字符串

c - 如何在 c 中使用 scanf 读取空格?

c - 段错误,大小为 4 的无效写入

php - HTTP POST 未在 c 中返回正确的响应

c - 为什么 SIGALRM 第二次不工作?

c - 在 f# 中编写方法

c++ - 有操作系统和没有操作系统的两个空 main{} 程序有什么区别?