[STM32F4] STM32 中报错:undefined reference to `strncpy_s'

[复制链接]
471|4
唐纳德d 发表于 2025-11-10 16:51 | 显示全部楼层 |阅读模式
我对strncpy_s的理解是,它是 C11 标准的一部分,且包含在string.h头文件中。不清楚为什么编译器不将strncpy_s识别为已存在的标准函数。
我的编译器是 GNU11,按照我的理解,它理应支持 C11 标准(因此也应包含strncpy_s函数)。浸膏和错误如下
../Core/Src/messageprocesser.c: In function 'send_Message':
../Core/Src/messageprocesser.c:56:2: warning: implicit declaration of function 'strncpy_s'; did you mean 'strncpy'? [-Wimplicit-function-declaration]
   56 |  strncpy_s((char*) outputMessage + COMMAND_CHAR, COMMAND_LENGTH, (const char*) cmd, COMMAND_LENGTH);
      |  ^~~~~~~~~
      |  strncpy
c:\st\stm32cubeide_1.6.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_1.5.0.202011040924\tools\arm-none-eabi\bin\ld.exe: Core/Src/messageprocesser.o: in function `send_Message':
C:/Users/User/STM32CubeIDE/workspace_1.6.0/usbtest/Debug/../Core/Src/messageprocesser.c:56: undefined reference to `strncpy_s'

684546911a78a645db.png

七毛钱 发表于 2025-11-12 16:55 | 显示全部楼层
strncpy_s 并不是标准 C11 函数
内政奇才 发表于 2025-11-12 17:55 | 显示全部楼层
替换为标准 C 函数 strncpy
今天会画卧蚕吗 发表于 2025-11-12 19:56 | 显示全部楼层
在嵌入式开发中,建议优先使用标准 C 函数,避免依赖特定编译器的扩展函数。
classroom 发表于 2025-11-12 19:57 | 显示全部楼层
直接替换为 strncpy 是最简单的解决方案。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

68

主题

68

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部