#define LINE_FILE ("Line"#__LINE__"of file"__FILE__)
int main(void)
{
printf("%s", LINE_FILE);
}
我的预期:
LINE_FILE = "Line linenumber of file filename"
和printf()
可以输出这个字符串。
http://ww2.sinaimg.cn/large/005FchG6gw1esb0pvwxr3j30he06jjt7.jpg
最佳答案
__LINE__
不会扩展为“字符串”,而是扩展为 int
。
要解决这个问题,您可能需要执行以下操作:
#define _LINE_FILE2(filename, linenumber) "Line " #linenumber " of " filename
#define _LINE_FILE1(filename, linenumber) _LINE_FILE2(filename, linenumber)
#define LINE_FILE _LINE_FILE1(__FILE__, __LINE__)
进一步的 (gcc) 细节
关于c - 为什么我的宏不能编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30350558/