SO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
时间: 2023-11-19 14:49:58 浏览: 216
SO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 是一个警告信息,意味着在C99版本及其后的规范中不再支持隐式函数声明。这个警告通常发生在函数在使用之前没有进行显式声明或者函数声明与实际定义不匹配的情况下。
隐式函数声明是指在函数使用之前没有对函数进行显式声明或者函数原型不可见的情况下直接调用函数。在C99及其后的规范中,隐式函数声明被视为错误,编译器会发出警告。
为了消除这个警告,你需要在函数使用之前进行显式声明。在C99及其后的规范中,你也可以使用`extern`关键字来进行显式声明。
相关问题
keil5 ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
Keil 5是一款集成开发环境(IDE),主要用于嵌入式系统开发,特别是使用ARM微控制器。提到的警告信息"ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]"是在说从C99标准开始,C语言不再默认隐式地声明未显式定义的函数。这个警告表示你在源代码中可能使用了未明确指定原型(如返回类型、参数列表)的函数调用,这在现代的标准C编译环境中被认为是不推荐的。
C99及后续版本鼓励程序员提供完整的函数声明,以便编译器能更好地检查类型兼容性和错误。如果遇到这个警告,你需要做的是找到相应的函数并添加适当的声明,例如:
```c
void your_function_name(void); // 如果函数没有返回值
int your_function_name(int arg); // 如果函数有返回值和一个整数参数
your_function_name(); // 现在需要加上函数声明
```
如果你不确定如何声明,可以查阅相关的文档或者参考库头文件,以获取正确的函数原型信息。
ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
根据引用[2]中的信息,"-Wimplicit-function-declaration"是一个警告选项,用于指示ISO C99及更高版本不支持隐式函数声明。这意味着在C99及更高版本中,必须显式地声明所有的函数,否则会出现警告。
以下是一个示例,演示了在C99及更高版本中使用隐式函数声明会触发该警告的情况:
```c
#include <stdio.h>
int main() {
foo(); // 隐式函数声明,会触发警告
return 0;
}
void foo() {
printf("Hello, world!\n");
}
```
在上述示例中,我们在`main`函数中调用了`foo`函数,但没有提前声明`foo`函数。在C99及更高版本中,这将触发"-Wimplicit-function-declaration"警告。
为了解决这个警告,我们需要在使用函数之前提前声明它。修改示例代码如下:
```c
#include <stdio.h>
void foo(); // 提前声明foo函数
int main() {
foo(); // 正确调用函数
return 0;
}
void foo() {
printf("Hello, world!\n");
}
```
在修改后的代码中,我们在`main`函数之前提前声明了`foo`函数,这样就不会触发警告了。
阅读全文