我是C / C ++的新手,我刚刚下载了CodeLite IDE(欢迎任何其他免费建议)。 我打算编写一个C程序,但它只给我一个创建C ++工作区的选项。我可以在这个工作区中写我的C吗?
答案 0 :(得分:3)
这取决于您的IDE,您的编译器(由IDE调用以编译代码,并且通常[并不总是]不是IDE的一部分),以及您编写的代码类型。
实际上,相当多的C ++编译器都有“C模式” - 例如,命令行开关或可以通过IDE配置的其他设置 - 编译为C.您需要阅读编译器和IDE文档。请记住,有些编译器,即使在C模式下,也支持C语言中无效的C ++功能(反之亦然)。
它还取决于您打算编写什么类型的C代码,以及您如何知道不属于C ++的C的功能,反之亦然。
但是,是的,作为一般规则,您可以在C ++工作区中编写C程序。这样做时,请注意上述问题。
另外,当你自豪地向经验丰富的C或C ++开发人员展示一些精心设计的代码时,不要感到惊讶,只是被告知你正在编写C和C ++的混合体。不幸的是,编写C和C ++的混合体被C和C ++开发人员认为是不好的形式 - 主要是因为代码可能与某些编译器一起使用而与其他编译器失败。太多的编译器供应商在他们的文档中混合使用C和C ++,而太多的学习材料(介绍性文本等)也是如此。如果在(适当配置的)C ++环境中编写C代码,您的编译器很可能不会抱怨您的代码这样做。这不是在C ++环境中编写C所固有的问题 - 太多的C编译器供应商支持C ++功能作为扩展,反之亦然 - 但如果您编写C代码,则更容易遇到这种现象C ++环境,除非您不断学习标准C和标准C ++之间的差异,而不依赖于编译器和编译器文档。
我已经忘记了最终编写代码的初学者数量,这些代码是C和C ++的混合(例如,使用C ++特定功能,同时相信他们正在编写C,反之亦然)。只有当他们使用不同的编译器(或更糟糕的是,他们的编译器的更新)构建它们时,他们的代码才会中断。
如果您真的打算编写包含C和C ++混合的代码(我的意思是纯C函数与纯C ++函数接口,而不是像上面提到的混合),您将需要允许编译的编排进程 - 特别是链接 - 由C ++设置控制,即使特定文件的编译设置意味着它们被编译为C或C ++。
答案 1 :(得分:0)
是的,可能。编译main()时必须使用C ++编译器(例如,用于静态初始化) 你的C ++编译器应该指导链接过程(例如,它可以获得它的特殊库) 您的C和C ++编译器可能需要来自同一供应商并具有兼容版本(例如,因此它们具有相同的调用约定
答案 2 :(得分:0)
非平凡的C程序不会在没有修改的情况下编译为C ++代码 - C不是C ++的子集。见Where is C not a subset of C++?
设置编译器选项以将代码视为C。
对于在linux上使用IDE的免费编译器,请检查以下内容: Code::Blocks和 对于Windows: Microsoft Visual Studio Community
您可以找到大量免费的C和C ++编译器列表here。