Tôi bắt đầu số Learn C The Hard Way của Zed Shaw. Tôi đã tải xuống XCode và Công cụ Dòng lệnh. Nhưng khi tôi biên dịch chương trình đầu tiên:Cảnh báo GCC: khai báo ngầm của hàm 'đặt' không hợp lệ trong C99
int main(int argc, char *argv[]) {
puts("Hello world.");
return 0;
}
tôi nhận được cảnh báo này:
ex1.c: 2: 1: cảnh báo: khai ngầm của 'puts' chức năng là không hợp lệ trong C99 [-Wimplicit-function-declaration]
Chương trình biên dịch và thực thi chính xác.
Tôi đang sử dụng OSX 10.8.3. Nhập 'gcc -v'
cho:
Sử dụng thông số kỹ thuật tích hợp sẵn. Mục tiêu: i686-apple-darwin11 Được cấu hình với: /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 Mô hình chủ đề: posix gcc phiên bản 4.2.1 (Dựa trên Apple Inc. xây dựng 5658) (LLVM build 2336.11.00)
Xin hãy giúp đỡ.
Sử dụng 'int main (int argc, char * argv [])' khi đối số không được sử dụng là hơi ngớ ngẩn; nó phải là 'int main (void)' hoặc thậm chí 'int main()' thay thế. Tuy nhiên, đó là một cuộc tranh luận cho một ngày khác, có lẽ. Tôi lưu ý rằng GCC 5.x sử dụng C11 ('-std = gnu11') làm chế độ biên dịch mặc định. 'clang' (giả mạo là' gcc') sử dụng C99. Cả C99 và C11 đều yêu cầu tất cả các hàm (ngoại trừ 'main()') được khai báo trước khi chúng được sử dụng. –