c – gcc是否有一个pragma来定义文件类型/编译器?

前端之家收集整理的这篇文章主要介绍了c – gcc是否有一个pragma来定义文件类型/编译器?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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)

猜你在找的C&C++相关文章