【发布时间】:2011-06-30 03:42:58
【问题描述】:
我正在尝试使用编译器选项 c99 或 gnu99 编译 GNUstep 程序,但它没有被识别...这是我的 makefile:
include $(GNUSTEP_MAKEFILES)/common.make
TOOL_NAME = triangular
triangular_C_FLAGS = -std=gnu99
triangular_HEADERS =
triangular_OBJC_FILES = main.m
triangular_RESOURCE_FILES =
include $(GNUSTEP_MAKEFILES)/tool.make
谁能指出我正确的方向或让我知道我做错了什么?
这是 make 的输出:
This is gnustep-make 2.6.0. Type 'make print-gnustep-make-help' for help.
Making all for tool triangular...
Compiling file main.m ...
main.m: In function 'main':
main.m:18:3: error: 'for' loop initial declarations are only allowed in C99 mode
main.m:18:3: note: use option -std=c99 or -std=gnu99 to compile your code
make[3]: *** [obj/triangular.obj/main.m.o] Error 1
make[2]: *** [internal-tool-all_] Error 2
make[1]: *** [triangular.all.tool.variables] Error 2
make: *** [internal-all] Error 2
【问题讨论】:
-
你没有给我们足够的信息来继续。当你尝试运行它时会发生什么?
tool.make和common.make长什么样子? -
我添加了 make 的输出。 tool.make 和 common.make 是 GNUstep 环境中包含的大型 makefile。
-
这表示
main.m第 18 行存在问题。如果错误不明显,请尝试在helloWorld中隔离该代码片段并手动编译,无需 Make。跨度> -
@beta -
main.m的第 18 行将有类似for (int i=0; i<10; ++i){的内容,虽然在 c89 中是非法的,但在 c99 中是有效的。问题似乎是将-std=gnu99标志传递给编译器。
标签: objective-c makefile gnustep