解决warning: incompatible implicit declaration of built-in function 'strlen'

博客指出C语言编译时,像'incompatible implicit declaration of built - in function'这类警告,可通过添加对应头文件消除。如字符串操作函数需添加<string.h>,内存操作函数需添加<stdlib.h>。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c语言编译时,对于类似于warning: incompatible implicit declaration of built-in function 'strlen'的警告,可通过添加相应的头文件来消除。

如strlen、strcpy等对字符串的操作函数,需要添加#include <string.h>

如malloc、free等对内存的操作函数,需要添加#include <stdlib.h>

test2.c: In function ‘execute_script’: test2.c:22:34: warning: implicit declaration of functionstrlen’ [-Wimplicit-function-declaration] 22 | result = realloc(result, strlen(result) + strlen(buffer) + 1); | ^~~~~~ test2.c:22:34: warning: incompatible implicit declaration of built-in functionstrlen’ test2.c:7:1: note: include ‘<string.h>’ or provide a declaration ofstrlen’ 6 | #include <security/pam_appl.h> +++ |+#include <string.h> 7 | test2.c:23:9: warning: implicit declaration of function ‘strcat’ [-Wimplicit-function-declaration] 23 | strcat(result, buffer); | ^~~~~~ test2.c:23:9: warning: incompatible implicit declaration of built-in function ‘strcat’ test2.c:23:9: note: include ‘<string.h>’ or provide a declaration of ‘strcat’ test2.c: In function ‘pam_conversation’: test2.c:39:31: warning: implicit declaration of function ‘strdup’ [-Wimplicit-function-declaration] 39 | (*resp)[i].resp = strdup((char*)appdata); // 使用预设密码 | ^~~~~~ test2.c:39:31: warning: incompatible implicit declaration of built-in function ‘strdup’ test2.c: In function ‘show_x11_dialog’: test2.c:75:30: warning: incompatible implicit declaration of built-in function ‘strdup’ 75 | char* msg_copy = strdup(message); | ^~~~~~ test2.c:76:26: warning: implicit declaration of function ‘strtok’; did you mean ‘strtoq’? [-Wimplicit-function-declaration] 76 | char* line = strtok(msg_copy, "\n"); | ^~~~~~ | strtoq test2.c:76:26: warning: initialization of ‘char *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion] test2.c:81:53: warning: incompatible implicit declaration of built-in functionstrlen’ 81 | MARGIN, y_pos, line, strlen(line)); | ^~~~~~ test2.c:81:53: note: include ‘<string.h>’ or provide a declaration ofstrlen’ test2.c:82:22: warning: assignment to ‘char *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion] 82 | line = strtok(NULL, "\n"); | ^ /usr/bin/ld: 找不到 -lXutf8 collect2: error: ld returned 1 exit status
最新发布
07-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值