2013-02-18 81 views
0

对于我的CPS类,本学期我们将从C++过渡到C。对于我的C++,我越来越依附于xCode,它是快速而简单的调试器。但是,对于C来说,xCode让我做很多C++,我不应该允许在C中做这些事情。在Xcode 4.6中使用gcc

例如,我可以初始化并从循环内声明一个循环变量,它不是允许C.

C:

int i 
for(i = 0; i < 100; i++) 
{ 
    printf("This is a number: %i", i); 
} 

但允许C++ C++:

for(int i = 0; i < 100; i++) 
{ 
    printf("This is a number: %i", i); 
} 

我所有的工作已经到实验室机器上编译(运行Linux和编译与gcc)为了它的数量,所以我正在寻找一种方法来继续使用xCode运行我的程序与gcc(或至少是不会让我做C++的东西)。看来xCode已经不再支持gcc了。无论如何,我仍然可以继续使用xCode,但是它已经以“老派”的学校方式进行编译,所以它会捕获这样的东西?

现在我一直在使用sublime2,只是在终端编译。现在是好的,但是当涉及到调试时,我已经在使用xCode这么长时间后对gdb产生了仇恨。

+0

从[C99标准](http://en.wikipedia.org/wiki/C99)开始,在循环中声明'i'在C中是合法的。 – 2013-02-18 03:59:14

+0

@KurtRevis,这就是我害怕的,我们必须在我们的实验室机器上使用旧版C标准卡住。不知何故gcc不喜欢这个。我只需要在两者之间跳跃,并根据需要找出差异。谢谢你的提示。 – tknickman 2013-02-18 04:01:35

+2

除非你的实验机器真的是古老的,你可以使用'-std = c99'(或'-std = gnu99'用于C99和GNU扩展)在它们上调用gcc。如果您不确定您的班级是否允许,请与您的导师谈谈。也许他会很高兴,或者你可以说是时候开始使用14岁的语言版本,而不是24岁的版本。 :) – rickster 2013-02-18 04:11:54

回答

1

您可以使用-std参数tell clang what dialect of C to use编译器。这听起来像你可能想要-std=c89-std=gnu89

在Xcode中,在您的项目或目标的构建设置中,将“C语言方言”设置为任何你想要的。

我不会指望这一切,但它应该让你更接近。