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

4 c gcc

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

编译时我收到错误:

common/string.c:11:6: error: conflicting types for built-in function ‘tolower’ [-Werror]
Run Code Online (Sandbox Code Playgroud)

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

更新答案:使用 -fno-builtin

oua*_*uah 5

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

您可以通过使用来消除警告,-fno-builtin但最好的方法是为tolower.

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

  • 答案不是`-fno-builtin`,答案是不要使用保留标识符。 (4认同)
  • @mSO,如果您正在实现自己的操作系统内核并且不想依赖编译器环境提供的 C 库,那么您处于所谓的“独立”环境中。特殊规则适用于此,特别是您必须说服您的编译器将自己置于这种情绪中。如何做到这一点因编译器而异,gcc 为此提供了 `-ffreestanding`。 (4认同)
  • 为什么不,如果您正在实现自己的操作系统内核,那为什么不呢。 (3认同)