FreeRTOS 中 strnlen 的隐式声明
Implicit declaration of strnlen in FreeRTOS
在使用 C99 方言使用 GCC 开发我的 FreeRTOS 应用程序时,我决定使用 strnlen,假设它是一个标准的 C 函数,我只需要包含它即可使用它。编译器警告我 strnlen 的隐式声明,让我意识到它不是 C99 标准的一部分。但是,由于没有任何链接器错误,我假设该函数确实存在于某处..
如果不是 string.h,我应该包括什么 header 才能使用 strnlen?大多数在线网站和 strnlen 的手册页都提到包括 string.h 作为 header
自己实现就行,没有特别的header。
size_t strnlen(const char *s, size_t maxlen) {
size_t len = 0;
if(s)
for(char c = *s; (len < maxlen && c != '[=10=]'); c = *++s) len++;
return len;
}
在使用 C99 方言使用 GCC 开发我的 FreeRTOS 应用程序时,我决定使用 strnlen,假设它是一个标准的 C 函数,我只需要包含它即可使用它。编译器警告我 strnlen 的隐式声明,让我意识到它不是 C99 标准的一部分。但是,由于没有任何链接器错误,我假设该函数确实存在于某处..
如果不是 string.h,我应该包括什么 header 才能使用 strnlen?大多数在线网站和 strnlen 的手册页都提到包括 string.h 作为 header
自己实现就行,没有特别的header。
size_t strnlen(const char *s, size_t maxlen) {
size_t len = 0;
if(s)
for(char c = *s; (len < maxlen && c != '[=10=]'); c = *++s) len++;
return len;
}