Как я должен избежать именования коллизий с включенными библиотеками в C? - PullRequest
2 голосов
/ 17 мая 2019

У меня было перечисление TokenType, определенное в одном из файлов заголовков в моем проекте.

Когда я позже включил <windows.h> в какой-то заголовок, компилятор пожаловался, что он уже определяет свой собственный TokenType.

Какое соглашение в C позволяет избежать таких конфликтов имен?Должен ли я назвать любую общедоступную вещь, используемую в моем проекте (function, enum, typedef struct и т. Д.) С префиксом MyProject_?Например MyProject_TokenType?Кажется некрасивым.Каков общий подход к этому?

Каков будет общий подход для библиотек и каков подход для автономных приложений (таких как мое собственное)?

1 Ответ

3 голосов
/ 17 мая 2019

Поскольку ANSI C не поддерживает пространство имен, добавление имени проекта / файла к глобальной переменной / типу является наиболее практичным вариантом, с которым я когда-либо сталкивался. Хотя это делает имя длиннее, я также нахожу его более организованным и читаемым, в дополнение к преимуществу предотвращения столкновений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...