struct typedef与stdlib冲突的名称

时间:2014-04-02 10:33:02

标签: c naming-conventions

我遇到一个问题,我的一个结构类型定义mode_tstdlib

中的一个发生冲突

mode_t已在sys/types.h

中定义

在这种情况下最好的做法是什么?将我的结构重命名为其他东西还是有其他方法来解决冲突?

3 个答案:

答案 0 :(得分:4)

从不拥有以_t结尾的结构名称或变量名称。注意编译器或标准库保留的所有名称。

虽然C标准在技术上是合法的,但许多平台(例如POSIX)明确禁止它。

您最好的选择是重命名您的结构。

答案 1 :(得分:1)

如果名称在C程序中发生冲突,则需要重命名结构。在C ++中,您可以使用名称空间。

或者如果您想使用此名称,请不要包含sys/types.h

答案 2 :(得分:1)

如果您的程序名称与库变量名称冲突,请更改程序中的名称。