我有一个不使用glibc
的小RTOS,我在string.c中编写了自己的函数(例如tolower
)
编译时我收到错误:
common/string.c:11:6: error: conflicting types for built-in function ‘tolower’ [-Werror]
是否有CFLAGS来解决这个问题?
更新答案:使用-fno-builtin
答案 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);