可能重复:
“C++ 的 C 子集”-> 哪里没有?例子?
我知道 C 是 C++ 的子集(即不存在不是有效 C++ 代码的有效 C 代码)。我的问题是是否g++
与所有 C 代码完全兼容。例如,将
g++ -o testing test.c
产生一个相同的二进制文件
gcc -o testing test.c
在所有情况下?
更具体地说,如果它们并不总是创建相同的二进制文件,是否有任何理由表明这可能是一个问题?g++
如果我不确定代码,总是使用它是否安全?
可能重复:
“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
C++ 中没有隐式规则...