2010-03-20 3 views
12

В C++ можно использовать пространство имен, чтобы отдельные группы, работающие в одной и той же кодовой базе, могли непреднамеренно создавать одноименные функции и тем самым создавать конфликт. Мой вопрос, прежде чем идея пространства имен выходит, как один может эмулировать пространство имен в С.Как можно эмулировать пространство имен в C?

ответ

18

Называя вещи по-разному, например:

void namespace_group_function(); 

gtk+ является ярким примером этого традиционного стиля:

GtkWidget* gtk_window_new(GtkWindowType type); 
+0

Он работает для выделения независимых групп, но не поддерживает зависящий от аргумента поиск и псевдонимы пространства имен. –

+0

Мне очень нравится тот факт, что префикс библиотеки для классов - CamelCased, в то время как он подчеркивает функции. Это делает вещи красивыми и последовательными. –

2

Для не экспортируемых символов вы помещаете каждый модуль в отдельный файл.

Для экспортированных символов вы обычно применяете префикс. Две или три буквы являются общими.

6

Используйте общий префикс для имен всех ваших общедоступных символов, поэтому foo::bar будет foo_bar. бросать префикс на все имена символов, по сути, это пространство имен. (а также разрешение символов, используемых без префикса, для объявлений с префиксом, что очень полезно)

Смежные вопросы