[warning] command line option '-std=c99' is valid for c/objc but not for c++
时间: 2023-05-31 12:21:10 浏览: 2522
### 回答1:
这是一个警告信息,意思是命令行选项“-std=c99”适用于C语言和Objective-C语言,但不适用于C++语言。可能是因为C++语言有自己的标准版本,不需要使用C语言的标准版本。如果你在使用C++编译器时遇到了这个警告,可以尝试使用C++的标准版本选项来代替。
### 回答2:
“-std=c99” 命令行选项适用于 C 和 Objective-C 语言,但不适用于纯 C 语言。它是用来指定编译器采用的 C 语言标准版本的选项。C99 是 C 语言的一个标准版本,相对于旧版标准 C89,它引入了一些新的特性,如可变长度数组、复合字面量、_Bool 布尔类型、内联函数等,并完善了现有语言特性。
对于使用 C 语言开发的程序员来说,掌握 C99 标准的特性,能够编写出更加高效、清晰的代码。但是在使用编译器时,必须要注意该编译器是否支持 C99 标准,否则使用上述命令行选项可能会导致编译错误。
事实上,不支持 C99 标准的编译器比较老旧,现在大多数现代编译器都已经支持了 C99 标准。如果使用的编译器不支持该标准,可以考虑升级或更换编译器,或者适当修改代码以遵循较老的 C 语言标准版本。
总之,了解 C99 标准是 C 语言程序员必备的技能之一,但要在使用编译器时注意该编译器是否支持该标准,并合理使用命令行选项来指定采用的 C 语言标准版本。
### 回答3:
这个警告信息告诉我们,在编译 C/C++ 代码时,使用命令行选项“-std=c99”是合法的,但是它只适用于编译 C 和 Objective-C 代码,不适用于 C++ 代码。
C99 是 C 语言的最新 ANSI/ISO 标准,它引入了一些新的语言特性,如变长数组、复合字面量和可变参数宏等。如果我们使用了“-std=c99”选项,则编译器会按照 C99 标准进行编译,从而支持这些新特性。这个选项一般用于需要使用一些 C99 新语法的代码。除此之外,还有一些其他的“-std=”选项,例如“-std=c++11”、“-std=c++14”,用于支持 C++11 和 C++14 标准。
然而,这个警告提示我们不要将“-std=c99”选项用于编译 C++ 代码,因为 C++11 标准已经成为新的 C++ 标准,且与 C99 标准存在差异。如果我们在 C++ 代码中使用了一些 C99 的新语法特性,那么使用“-std=c99”选项进行编译将会引起编译错误。因此,在编译 C++ 代码时,应该使用适当的 C++ 标准选项,如“-std=c++11”或“-std=c++14”。
总之,在编写 C/C++ 代码时,我们应该清楚选项“-std=c99”的适用范围,并针对不同的语言和标准选择相应的编译选项,以确保代码的正确性和可移植性。