D:Keil_v5ARMARMCCBin..includestring.h(321): error: #169: expected a declaration

正点原子中源码FreeRTOS在使用:

string.h第321行:(报错)

+extern _ARMABI void *memset(void * /*s*/, int /*c*/, size_t /*n*/) __attribute__((__nonnull__(1)));

错误信息为:

D:Keil_v5ARMARMCCBin..includestring.h(321): error:  #169: expected a declaration
  +extern _ARMABI void *memset(void * /*s*/, int /*c*/, size_t /*n*/) __attribute__((__nonnull__(1)));
..HARDWARETIMER imer.c: 0 warnings, 1 error

我的疑惑是:

+extern _ARMABI void *memset( /*  ***  */);

为什么在extern前面会出现+,而且多个程序源码中的string.h都有+

解决方案:

方法1:删除+

方法2:

用以下语句:

extern _ARMABI void *memset(void * /*s*/, int /*c*/, size_t /*n*/) __attribute__((__nonnull__(1)));

替换源码中的:

+extern _ARMABI void *memset(void * /*s*/, int /*c*/, size_t /*n*/) __attribute__((__nonnull__(1)));

结果显示:

Build target 'FreeRTOS'
"..OBJLED.axf" - 0 Error(s), 0 Warning(s).
Build Time Elapsed:  00:00:01

无报错!

感谢博主(https://www.cnblogs.com/sunny99/)

sumoier

对本文的支持 

原文地址:https://www.cnblogs.com/Yi-920259020/p/13784303.html