gpt4 book ai didi

c - 关于交叉编译的 c 中内置函数的警告

转载 作者:太空宇宙 更新时间:2023-11-03 23:42:11 25 4
gpt4 key购买 nike

代码:

#include <string.h>
//Return copy of str string from index position and len length
char *StrCpy2(char *str, unsigned short index, unsigned char len)
{
char *text;
text = (char *)malloc(sizeof(char)*(len+1));
if (text == NULL) return text;
strncpy(text, str + index, len);
text[len] = '\0';
return text;
}

有关此文件和行的控制台输出:

Compiling file: String.c
arm-none-eabi-gcc -c -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -ffast-math -O0 -ffunction-sections -fdata-sections -Wall -Wstrict-prototypes -Wextra -std=gnu99 -g -ggdb3 -fverbose-asm -Wa,-ahlms=out/String.lst -DSTM32F40_41xxx -DUSE_STM324x7I_EVAL -MD -MP -MF out/String.d -I. -IBACnet/inc -IBACnet/inc/objects -Iinc -Ilib/drivers/inc -Ilib/eval -IUI/inc -IuIP/inc String.c -o out/String.o
String.c: In function 'StrCpy2':
String.c:39:2: warning: implicit declaration of function 'strncpy' [-Wimplicit-function-declaration]
strncpy(text, str + index, len);
^
String.c:39:2: warning: incompatible implicit declaration of built-in function 'strncpy'
String.c:39:2: note: include '<string.h>' or provide a declaration of 'strncpy'

我感到迷茫,因为在从 stm32f1 移植到 stm32f4 以及将代码源工具链移植到前沿工具链的过程中出了点问题 (this one) .如您所见,我已经包含了 .也许某些#defines 不正确?可能是eclipse或者系统中的某些路径不对?

最佳答案

我几乎可以肯定,您有一个名为 String.h 的文件在你的项目中。因为你在 Windows 上编译它,它不够聪明,无法注意到你的 String.h 之间的差异。和工具链的 string.h , 行 #include <string.h>实际上包括你的 String.h ,您很可能没有该声明。

如果您在 Linux 上编译它,它很可能会工作,因为文件名的大小写在那里很重要。对于 Windows,除了以不同方式命名文件(尤其是标题)之外,您没有其他解决方案。就我个人而言,我建议每个模块( header +源)有一个全局函数,然后您可以在该函数之后命名模块。所以在上面的情况下你会有StrCpy2.hStrCpy2.c .

关于c - 关于交叉编译的 c 中内置函数的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42201873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com