C++ 使用gcc而不是g++;

C++ 使用gcc而不是g++;,c++,c,gcc,g++,coding-style,C++,C,Gcc,G++,Coding Style,可能的重复项: 谁能想出一个用GCC或任何其他C编译器编译的代码,不编译G++或任何其他C++编译器?< /P> 更新: 我的意思不仅仅是关键词 更新2: 谢谢大家的回答。显然,主持人和我对C和C++的细微差别的热情不如我。 更新3: 主持人:你能按照你的建议,把它和我之前的问题合并在一起吗?把这两个问题放在一起是完全有道理的 int main(int argc, char **class) { return !argc; } 编辑:另一个例子 int foo(); int ma

可能的重复项:

谁能想出一个用GCC或任何其他C编译器编译的代码,不编译G++或任何其他C++编译器?< /P> 更新: 我的意思不仅仅是关键词

更新2: 谢谢大家的回答。显然,主持人和我对C和C++的细微差别的热情不如我。 更新3: 主持人:你能按照你的建议,把它和我之前的问题合并在一起吗?把这两个问题放在一起是完全有道理的

int main(int argc, char **class)
{
    return !argc;
}

编辑:另一个例子

int foo();
int main(void) {
    return foo(42);
}
int foo(int bar) {
    return bar - 42;
}
试一试

记住使用严格的标志进行编译

> gcc -pedantic -std=c99 t.c
> g++ -pedantic t.c
t.c: In function `int main()':
t.c:6: error: ISO C++ forbids variable length array `x'
#包括
int main()
{
char*s=malloc(128);
返回0;
}
这将使用gcc编译,但不使用g++。C++需要从代码> >空隙*<代码>的显式转换,而C不需要。

< < /P>如何? /* Within a function */ { enum {foo} bar; bar++; } /*函数内*/ { 枚举{foo}bar; bar++; }


<>这似乎是C++设计中一个相当大的突破性改变,但它是什么。

< P>指针在<代码>空白> <代码>:

void* t;
t++; // compiles only in gcc

字符大小如何:
更糟糕的是,它进行编译,但在运行时生成不同的输出

#include <stdio.h>

int main()
{
    fprintf(stdout, "%s\n", (sizeof('\xFF') == sizeof(char))?"OK":"Fail");
}

> gcc -pedantic t.c
> ./a.exe
Fail
> g++ -pedantic t.c
> ./a.exe
OK

即使对象的大小不同,它也能在两个编译器上工作。

不,自己做家务也许看起来像,但事实并非如此。这是我刚才问的一个问题的自然延续,在你提问的评论帖子中,有人给你举了一些例子。我发誓,当我问这个问题时,他们不在那里question@matcheek:很公平,我认为pts至少编辑了一次评论。好吧,关键字类,但是如果我们忘记了关键字,关于关键字?工作,因为所有的“小”在任何情况下,当传递给varag函数时,整数类型都会升级为
int
void* t;
t++; // compiles only in gcc
#include <stdio.h>

int main()
{
    fprintf(stdout, "%s\n", (sizeof('\xFF') == sizeof(char))?"OK":"Fail");
}

> gcc -pedantic t.c
> ./a.exe
Fail
> g++ -pedantic t.c
> ./a.exe
OK
fprintf(stdout, "%c%c\n", 'A', 'B');