错误:内置函数’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);