错误:内置函数'tolower'的冲突类型[-Werror]

时间:2013-12-14 11:12:12

标签: c gcc

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

编译时我收到错误:

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

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

更新答案:使用-fno-builtin

2 个答案:

答案 0 :(得分:4)

tolower是C库中的一个函数,它的标识符是一个保留的标识符,用作带外部链接的标识符,即使你没有在声明它的地方包含标题。

您可以使用-fno-builtin删除警告,但最好只是为tolower选择其他名称。

  

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

答案 1 :(得分:1)

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

无论如何......要么不使用-Werror,要么附加-Wno-error或修改你的功能看起来像the real thing

int tolower(int c);