我知道C是C ++的一个子集(即不存在有效的C代码,它不是有效的C ++代码)。我的问题是g++
是否与所有C代码完全兼容。例如,
g++ -o testing test.c
生成相同的二进制文件
gcc -o testing test.c
在所有情况下?
更具体地说,如果他们并不总是创建相同的二进制文件,那么有什么理由可能会出现问题吗?如果我不确定代码,总是使用g++
是否安全?
答案 0 :(得分:6)
C不是C ++的子集。
尝试:
foo.c的
int main() {
int class = 0;
return 0;
}
无论如何在这里玩得开心:Where is C not a subset of C++?
答案 1 :(得分:3)
很难弄清楚如何回答这个问题:
void*
的隐式演员阵容是另一个。g++
(哪个版本?)或-ansi
来编译? -pedantic
? std=<lang>
怎么样?鉴于所有这些含糊不清的情况,我们无法给出明确的答案。
答案 2 :(得分:2)
C不是C ++的子集。从来没有。 C99与C ++有很大的不同,但即使是经典的C89 / 90也不是C ++的一个子集,它有很多显着的差异。
即使对于C89 / 90,在C ++编译器下“破坏”有效C代码的差异也包括
int
规则......