<分区>
我需要一些关于这段代码的解释
#define TRACE_PRINT5 (F, X) fprintf(stderr, "%s" STRGY(__LINE__) ":(" #X "): ", X);
我知道开头 # 的作用,但我不明白 ":("#X"): "
标签 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/