为什么文件扩展名对编译有影响?

保罗·杨|

我使用GNU编译器在CentOs8下编译此代码:

#include <stdlib.h>

int main() {
    int *a = malloc(3 * sizeof(int));
    return 0;
}

当我将其命名为a.cpp时,两个编译命令均失败:

g++ -o a a.cpp
gcc -o a a.cpp

但是在将其重命名为ac之后,此编译命令成功:

gcc -o a a.c

这是C代码,不是C ++代码。我相信使用gccg++应该有所作为,但似乎编译器仅考虑文件扩展名。

您能提供一些细节吗?

塞尔比

C ++在从void*返回malloc()到的隐式强制转换时会出错int*而C允许从隐式强制转换void*为其他指针类型。

大多数编译器将默认查看文件扩展名以确定要编译的语言。

Aman gcc显示所有.c文件默认都被编译为C而所有.cc.cp.cxx.cpp.CPP.c++,和.C(大写C)文件编译为C++

您可以通过-xgcc / g ++选项覆盖此行为,以强制使用该语言

例子:

 gcc -x c++ foo.c -c   // compiles foo.c as C++ instead of C

在大多数Unix系统上,gcc和g ++通常是相同的二进制文件。它只是默认使用不同的行为,具体取决于其自身的argv[0]参数。

显式使用g ++和gcc与-x选项之间可能存在其他行为差异我不确定。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么stdbuf对Python没有影响?

什么是.jspf文件扩展名?怎么编译呢?

为什么未使用的流对结果有影响?

为什么Angular 2使用.ts文件扩展名?

Vim为什么保存带有〜扩展名的文件?

具有文件扩展名的Java文件编译

为什么组合器对输出没有影响?

为什么线程对类变量的更改没有影响?

为什么最小高度样式对div没有影响

为什么bin / www文件在express-generator中没有扩展名?

Java编译:类名与具有文件扩展名的类名

为什么没有文件扩展名的页面无法加载

为什么每次创建文件时都会创建带有扩展名〜的新文件

对于Windows系统,“。bat”或“ .cmd”扩展名对我的脚本有什么影响吗?

当我用gVIM编辑时,为什么每个文件的扩展名中都带有'〜(tilde)'?

如果suid位对目录没有影响,sticky位对文件没有影响,为什么它们不合并为一位?

CSS:为什么<input>对父div的宽度有影响

为什么在指定特定的文件扩展名而不是“或”时“和”有效?

为什么需要cshtml扩展名?

malloc对RAM的使用没有影响,为什么?

为什么tar和gzip文件通常具有文件扩展名?

为什么我的ini文件的扩展名没有任何内容?

为什么没有文件扩展名后缀html的请求会下载文件?

文件扩展名对 DBeaver 有影响吗?

为什么用PHP上传文件时Linux创建的临时文件没有扩展名,而Windows则带有扩展名?

为什么我使用 servlet 下载没有扩展名的文件?

为什么 subscribeOn 对 Rxjava 中的 PublishSubject 没有影响?

为什么要创建文件扩展名?

为什么方差对 flatmapto 函数有影响?