C语言这段预处理命令错在哪里?为什么编译器报错?

#define LINE_FILE ("Line"#__LINE__"of file"__FILE__)

int main(void)
{
    printf("%s", LINE_FILE);
}

如上的预处理命令,希望
LINE_FILE = "Line 行数 of file 文件名"
然而编译器报错,也不知道错在哪。。。
005FchG6gw1esazxa0fenj30he06jjt7.jpg

阅读 4k
2 个回答

#define LINE_FILE ("Line # __LINE__ of file __FILE__")
就算可以用也应该是这种格式啊! __LINE__ 和 __FILE__ 这个是define 会直接提换!

补充:
在c艹中:
#define LINE_FILE std::cout<<"Line # " << __LINE__ << " of file "<<__FILE__<<std::endl;
这个宏定义是可以用的!
直接使用 : LINE_FILE

#define LINE_FILE "Line # " << __LINE__ << " of file "<<__FILE__
换成这样的话需要
这样使用 : std::cout<< LINE_FILE <<std::endl;

__LINE__是int,不支持这种用法。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进