error: declaration does not declare anything [-fpermissive]
时间: 2023-12-09 17:05:27 浏览: 341
This error message typically occurs when a variable or function declaration is missing a data type or identifier.
For example, the following code will produce this error:
```
int; // missing identifier
void(); // missing function name
```
To fix the error, make sure that all variable and function declarations include a data type and identifier:
```
int x; // variable declaration with data type and identifier
void foo(); // function declaration with data type (void) and identifier (foo)
```
If you are still encountering the error, make sure that your code is properly formatted and that all necessary headers and libraries are included.
相关问题
使用git编译C 文件时出现“declaration does not declare anything [-fpermissive]”错误
出现“declaration does not declare anything [-fpermissive]”错误通常意味着在你的C代码中有一个声明没有正确完成。这可能是因为声明的语法不正确,或者缺少了必要的信息,比如缺少类型定义、缺少分号等。
解决这个问题通常需要检查以下几个方面:
1. 确保所有函数声明都有返回类型。例如,如果声明了一个函数但没有指定返回类型,或者返回类型与实际定义不符,都会导致这个错误。
2. 检查结构体或枚举类型的声明。如果结构体或枚举类型声明的末尾缺少分号,也会引发这个错误。
3. 确认头文件包含的路径是否正确。如果头文件的包含路径不正确或者头文件不存在,编译器可能无法找到声明,导致此类错误。
4. 查看错误消息的具体位置。错误消息通常会指示出错的位置,根据这个位置仔细检查相关的声明是否完整和正确。
举个例子,如果你在代码中写了这样的声明:
```c
void foo()
{
// ...
}
```
但实际上是想要声明一个函数原型,则应该像下面这样写:
```c
void foo();
```
确保在使用`git`与`gcc`编译时,源代码文件的格式正确,没有语法错误,且所有的声明都是完整的。如果有多个文件,确保所有的头文件都被正确包含,并且编译命令正确无误。
Main.c: In function 'main': Main.c:6: error: implicit declaration of function 'scanf' Main.c:6: warning: incompatible implicit declaration of built-in function 'scanf' Main.c:10: error: implicit declaration of function 'printf' Main.c:10: warning: incompatible implicit declaration of built-in function 'printf' Main.c:13: warning: incompatible implicit declaration of built-in function 'printf'
这个错误意味着您在代码中使用了未声明的函数scanf、printf。您需要在代码的开头添加以下头文件:
```c
#include <stdio.h>
```
这将声明scanf和printf函数。如果您已经包含了这个头文件,那么很可能是因为您的编译器不支持C99标准。在这种情况下,您需要将您的编译器升级或者显式地声明这些函数。例如,您可以添加以下代码:
```c
extern int scanf(const char *format, ...);
extern int printf(const char *format, ...);
```
这将显式声明这些函数并解决编译错误。
阅读全文