如何避免与C中包含的库命名冲突?

时间:2019-05-17 14:22:56

标签: c namespaces naming-conventions

我在项目的一个头文件中定义了一个枚举TokenType

后来我在某个标头中包含<windows.h>时,编译器抱怨它已经定义了自己的TokenType

在C中避免此类命名冲突的约定是什么?我是否必须使用前缀MyProject_来命名整个项目中使用的任何公共事物(函数,枚举,typedef结构等)?例如MyProject_TokenType?看起来很丑。常见的处理方法是什么?

什么是图书馆的通用方法?什么是独立应用程序(例如我自己的)?

1 个答案:

答案 0 :(得分:2)

由于ANSI C不支持名称空间,所以迄今为止,我遇到的最实用的选择是将项目/文件名放在全局变量/类型之前。尽管它使名称变长了,但除了避免碰撞的优点之外,我还发现它更具组织性和可读性。