Netbeans C GCC使用C99

时间:2014-08-03 02:11:55

标签: c gcc netbeans c99

我转到Netbeans > Preferences > C/C++ > Build Tools并将C Comiler:usr/bin/gcc更改为usr/bin/c99,这样当for循环第一次时,我可以在for循环中声明一个局部变量遇到。

我仍然收到错误......

"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
"/usr/bin/make"  -f nbproject/Makefile-Debug.mk dist/Debug/GNU-MacOSX/barchart
mkdir -p build/Debug/GNU-MacOSX
rm -f "build/Debug/GNU-MacOSX/main.o.d"
c99    -c -g -MMD -MP -MF "build/Debug/GNU-MacOSX/main.o.d" -o build/Debug/GNU-MacOSX/main.o main.c
c99: illegal option -- M
usage: c99 [-cEgs] [-D name[=value]] [-I directory] ... [-L directory] ...
       [-o outfile] [-O optlevel] [-U name]... [-W 64] operand ...
make[2]: *** [build/Debug/GNU-MacOSX/main.o] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2

BUILD FAILED (exit value 2, total time: 432ms)

我知道我的代码并没有搞砸,因为它只是一个简单的for循环:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv) {
    for (int i = 0; i < 42; i++) {
        printf("%d\n", i);
    }

    return (0);
}

我已经阅读了关于堆栈溢出的问题,人们反复询问如何执行此操作。大多数回复说"Add -std=c99 to your command line"。 Netbeans允许您在C Build Tools菜单中执行此操作,但它对我不起作用。 (在此之前我试图改变我的MakeFile,但那也没有用)。我终于尝试改变我的C解释器,如上所述,以便它指向C99 C解释器,但这也不起作用。

这不应该那么难。有没有人发现有效的解决方案(在Netbeans中至少)?

注意:

我通过使用CLang(我甚至不知道我有)来解决这个问题。我不知道它与GCC相比表现如何,但我知道它(希望)使用C99。它仍然在同一个目标目录(/usr/bin/)中,因此/usr/bin/CLang指向CLang编译器......而/usr/bin/CLang++就是 - 你猜对了 - C ++。如果我对CLang有任何问题,我可能会在下面发帖,以便人们可以确定他们是否想要使用它,但乍一看...... 我可以在for循环中使用局部变量;耶!

从我刚刚读到的内容来看,GCC与更多编程平台(C / C ++,java等)兼容,但CLang速度更快,内存更少:我从here得到了这个

3 个答案:

答案 0 :(得分:1)

您可以像这样设置C标准:

打开 project properties -> Build -> C Compiler -> C Standard 并在那里设置C99

C Standard应包含当前NetBeans /编译器上的Standard,C89,C99和C11。

不要改变编译器!

答案 1 :(得分:0)

转到“项目属性”,然后转到“构建” - > C编译器 - &gt;其他选项,并添加-std = c99。像这样:

NetBeans Project Properties with -std=c99

您的编译器应保留为/ usr / bin / gcc(希望您有足够新的版本!)。

答案 2 :(得分:0)

抱歉;我知道我正在回答我自己的问题,但我认为这是有效的,因为我在使用Clang的Mac OS x上设置了它,但是我无法在Windows上复制它,我仍然无法使-std=c99工作。所以,这是我的解决方案。

.c文件可以在任何正确配置的C ++解释器中运行。因此,为了允许C99实现,您可以简单地创建“C”编译器的路径,这是C ++编译器的路径。

例如,使用g++代替gcc。如果您使用的是Netbeans 8.0,只需转到options (windows)/preferences (mac) > C/C++ > Build Tools并将cc中的gcc更改为++

完成。至少它对我有用。

如果你这样做,你应该只创建一个.cpp文件。