``` DHT11.C(8): error C129: missing ';' before 'DHT11_Init'``` C语言中如何正确地书写函数声明并避免此类错误?
时间: 2024-12-08 07:16:23 浏览: 20
在C语言中,`DHT11_Init`看起来像是一个函数名,但报错信息指出缺少分号(`;`)。在C语言中,每个函数声明通常需要以分号结束。如果`DHT11_Init`是你试图声明的一个函数,正确的语法应该是这样的:
```c
void DHT11_Init(); // 函数声明,表示这是一个返回值为void,参数列表为空的函数
```
如果你有函数体,那么应该将函数声明放在头文件(`.h`文件)中,并在需要使用该函数的地方包含这个头文件;而在源文件(`.c`文件)中,只需要包含函数定义部分,即包含函数体:
**头文件 (dht11.h)**:
```c
#ifndef DHT11_H
#define DHT11_H
void DHT11_Init();
#endif
```
**源文件 (dht11.c)**:
```c
#include "dht11.h" // 包含头文件
// 这里可以有函数的具体实现
void DHT11_Init() {
// 函数内容...
}
```
确保你在需要使用`DHT11_Init`的地方包含了相应的头文件,这样就不会再出现`error C129`这类的编译错误了。
相关问题
DHT11.c(38): error C129: missing ';' before 'receive'
The error message "missing ';' before 'receive'" typically occurs when there is a syntax error in the code. In this, it seems that there is a missing semicolon before the function name 'receive'.
To fix this error, you need to add a semicolon (;) before the function name 'receive' on line 38 of the DHT11.c file.
Here's an example of how the corrected line might look:
```c
int receive(void);
```
Make sure to check for any other syntax errors in the code as well.
dht11.c(27): error c231: 'dht11readonebyte': redefinition
这个错误是因为在dht11.c文件中的第27行,重新定义了一个名为'dht11readonebyte'的函数,而在之前的代码中已经存在同名的函数。这可能是由于文件中有重复的函数定义造成的。
解决这个问题需要检查代码中的重复定义部分,并删除其中一个重复的函数定义。可以通过以下步骤解决该问题:
1. 仔细检查dht11.c文件中的函数定义部分,特别是'void dht11readonebyte()'这个函数的定义。
2. 检查代码中是否有其他文件包含了dht11.c文件,如果有,也需要检查这些文件中是否有对'dht11readonebyte'函数的重复定义。
3. 如果发现了重复定义的部分,需要删除一个重复的定义,只保留一个函数定义,确保每个函数都只有唯一的定义。
4. 重新编译代码,确保问题已经解决。
总而言之,修复该错误的关键是消除重复定义的函数。通常这种错误会在编译过程中显示,因此需要检查并纠正代码中的错误以解决问题。
阅读全文