错误:内置函数’tolower’的冲突类型

我有一个不使用glibc的小型RTOS,我在string.c中编写了自己的函数(例如tolower

编译时我收到错误:

 common/string.c:11:6: error: conflicting types for built-in function 'tolower' [-Werror] 

是否有CFLAGS来解决这个问题?

更新答案:使用-fno-builtin

tolower是来自C库的函数,其标识符是保留的标识符,用作具有外部链接的标识符,即使您没有包含声明它的标头。

您可以通过使用-fno-builtin来消除警告,但最好的只是为tolower选择另一个名称。

(C99,7.1.3p1)“以下任何子条款中包含外部链接的所有标识符(包括未来的库方向)始终保留用作具有外部链接的标识符。”

如果由于某种原因你没有使用C标准库,我不会告诉你这可能是一个坏主意。 即使内置函数可能会在某些无法控制的情况下隐含地链接到libc实现。

无论如何……要么不使用-Werror ,要么附加-Wno-error或修复你的函数看起来像真实的东西 :

 int tolower(int c);