可能重复:
“C++ 的 C 子集”-> 哪里不是?例子?
我知道 C 是 C++ 的子集(即不存在不是有效 C++ 代码的有效 C 代码)。 我的问题是
g++
是否与所有C代码完全兼容。 例如,将
g++ -o testing test.c
生成与
相同的二进制文件gcc -o testing test.c
在所有情况下?
更具体地说,如果他们并不总是创建相同的二进制文件,是否有任何原因可能会出现问题? 如果我不确定代码,始终使用
g++
是否安全?
很难弄清楚如何回答这个问题:
void*
的隐式转换是另一个。g++
(哪个版本?)还是通过 -ansi
来编译? -pedantic
? std=<lang>
怎么样?考虑到所有这些含糊之处,不可能给你一个明确的答案。
C 不是 C++ 的子集。从来没有这样过。 C99 与 C++ 有显着差异,但即使是经典的 C89/90 也不是具有大量显着差异的 C++ 子集。
即使对于 C89/90,C++ 编译器下“破坏”有效 C 代码的差异也将包括
int
规则...