main.c: In function 'subReplace': main.c:127:5: warning: implicit declaration of function 'strlnsertSub' [-Wimplicit-function-declaration] strlnsertSub(s,r,pos); ^ main.c: In function 'main': main.c:163:5: warning: implicit declaration of function 'gets' [-Wimplicit-function-declaration] gets(s1); ^ /tmp/ccXuF9gp.o: In function `main': main.c:(.text.startup+0xb5): warning: the `gets' function is dangerous and should not be used. /tmp/ccXuF9gp.o: In function `subReplace': main.c:(.text+0x4a5): undefined reference to `strlnsertSub' collect2: error: ld returned 1 exit status
时间: 2023-06-08 08:07:38 浏览: 195
对于您的问题,我可以告诉您,在您的代码中存在一些隐式声明的函数,这可能导致编译器警告和错误。特别地,函数'strlnsertSub'在你的代码中没有被正确声明,导致出现undefined reference错误。此外,函数'gets'也是危险的,不建议使用它,可以使用fgets代替。如果您需要更多帮助,请提供您的完整代码,我可以为您提供更具体的建议。
相关问题
In function ‘main’: oo.c:19:17: warning: implicit declaration of function ‘msgget’ [-Wimplicit-function-declaration] 19 | msgid = msgget(MSG_KEY, IPC_CREAT | 0666);//创建消息队列 | ^~~~~~ oo.c:26:9: warning: implicit declaration of function ‘msgsnd’ [-Wimplicit-function-declaration] 26 | msgsnd(msgid, &msg, sizeof(msg.choice) + sizeof(msg.pid), 0); | ^~~~~~ oo.c:28:9: warning: implicit declaration of function ‘msgrcv’ [-Wimplicit-function-declaration] 28 | msgrcv(msgid, &msg1, sizeof(msg1.choice) + sizeof(msg1.pid), 1, 0); // 接收玩家1的出拳信息 | ^~~~~~
这些警告是由于在代码中使用了未声明的函数而导致的。你需要在代码开头添加头文件来声明这些函数。对于这些警告,你需要添加以下头文件:
```c
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
```
这些头文件声明了在代码中使用的函数,包括 `msgget`、`msgsnd` 和 `msgrcv`。添加这些头文件可以解决这些警告。
../Core/Src/main.c:116:9: warning: implicit declaration of function 'TIM_SetCompare1' [-Wimplicit-function-declaration]
这个警告信息是由于在编译STM32微控制器的固件时,在main.c文件的第116行,编译器检测到了对一个函数`TIM_SetCompare1`的调用,但是在这之前没有找到这个函数的声明。这通常发生在以下几种情况:
1. 函数声明没有包含在编译的源文件或头文件中。
2. 函数所在的库文件没有被正确链接。
3. 函数名拼写错误。
在STM32的HAL库中,`TIM_SetCompare1`函数用于设置定时器的一个比较值,通常用于PWM输出。为了解决这个问题,可以尝试以下方法:
- 确认是否已经包含了相应的头文件。对于`TIM_SetCompare1`函数,通常需要包含`stm32f1xx_hal.h`或者对应系列的头文件。
- 确保HAL库已经通过正确的编译选项被编译,并且在链接器设置中被链接。
- 检查函数名是否正确。虽然STM32的标准库函数名通常不会拼错,但不排除在某些情况下由于编辑器错误、代码复制粘贴等原因导致的错误。
阅读全文