我开始Zed Shaw的Learn C The Hard Way。我已经下载了XCode和命令行工具。但是,当我编译第一个程序:GCC警告:函数'puts'的隐式声明在C99中无效
int main(int argc, char *argv[]) {
puts("Hello world.");
return 0;
}
我得到这样的警告:
ex1.c中:2:1:警告:函数 '使' 隐性声明是无效的 在C99 [-Wimplicit函数声明]
该程序并编译和正确执行。
我使用的是OSX 10.8.3。输入'gcc -v'
给出:
使用内置规格。目标:i686-apple-darwin11配置为: /private/var/tmp/llvmgcc42/llvmgcc42-2336.11~182/src/configure --disable-checking --enable-werror --prefix =/Applications/Xcode.app /Contents/Developer/usr/llvm-gcc-4.2 --mandir =/share/man --enable-languages = c,objc,C++,obj-C++ --program-prefix = llvm- --program-transform-name =/^ [cg] [^ .-] * $/s/$/- 4.2/--with-slibdir =/usr/lib --build = i686-apple-darwin11 --enable-llvm =/private/var /tmp/llvmgcc42/llvmgcc42-2336.11~182/dst-llvmCore/Developer/usr/local --program-prefix = i686-apple-darwin11- --host = x86_64-apple-darwin11 --target = i686-apple- darwin11 --with-gxx-include-dir =/usr/include/C++/4.2.1线程模型:posix gcc版本4.2.1(基于Apple Inc. build 5658)(LLVM build 2336.11.00)
请帮忙。
当参数未被使用时,使用'int main(int argc,char * argv [])'是轻度愚蠢的;它应该是'int main(void)'或者甚至是'int main()'。不过,这可能是另一天的争论。我注意到GCC 5.x使用C11('-std = gnu11')作为默认的编译模式。 'clang'(伪装成'gcc')使用C99。 C99和C11都要求在使用之前声明所有函数(main()除外)。 –