c – gcc是否有一个pragma来定义文件类型/编译器?
发布时间:2020-12-16 05:06:59 所属栏目:百科 来源:网络整理
导读:GCC根据文件扩展名(.c,.cc),命令行参数(-x)或直接调用适当的编译器(g而不是 gcc)自动在编译器之间切换. 有没有办法在文件中使用pragma覆盖这些? 评论后更新: 我正在转换目前50/50 C的代码库. C用C编译器完全编译.这是为了允许当前的“C”模块调用我无法更
GCC根据文件扩展名(.c,.cc),命令行参数(-x)或直接调用适当的编译器(g而不是
gcc)自动在编译器之间切换.
有没有办法在文件中使用pragma覆盖这些? 评论后更新: 我正在转换目前50/50 C&的代码库. C用C编译器完全编译.这是为了允许当前的“C”模块调用我无法更改的新C基(并且不希望换行).我想将扩展名保持为.c以获取真正为C的文件,即使它们现在具有C链接.我认为将它们保留为“.c”表示它们为何如此(我在想这里的后代!;-))但是更改构建系统以适应每个更改的C文件名也是一项大工作.更糟糕的是,C文件的一小部分将不会明智地转换为C,因此如果他们不调用C基础我想将它们保留为C.重写它们不是一种选择,但稳定性存在风险该项目太棒了. 解决方法
您提到有一个构建系统问题,提示此问题.我曾经通过在源文件中使用注释解决了类似的问题.我使用了Makefile规则,如:
%.o: %.c $(CC) $(CFLAGS) `if head -1 $< | grep -q 'C++'; then echo '-x c++'; else echo '-x c'; fi` -c -o $@ $< 现在,如果源文件以/ * C * /等注释行开头,则将其编译为C,否则将编译为C(无论CC = gcc还是CC = g) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |