我转到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得到了这个
答案 0 :(得分:1)
您可以像这样设置C标准:
打开 project properties -> Build -> C Compiler -> C Standard
并在那里设置C99
。
C Standard
应包含当前NetBeans /编译器上的Standard,C89,C99和C11。
不要改变编译器!
答案 1 :(得分:0)
转到“项目属性”,然后转到“构建” - > C编译器 - &gt;其他选项,并添加-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
文件。