2012-04-09 5 views
0

Я начал изучать openGL, а также начал разбивать мой проект в нескольких исходных файлах в первый раз. Поэтому я все еще немного смущен, и иногда я чувствую, что мои переменные разбросаны, особенно потому, что openGL требует широкого использования глобальных переменных. На данный момент у меня около 15 файлов.Общие переменные в разных исходных файлах

Моя основная проблема заключается в том, что некоторые переменные, например, разделяются некоторыми модулями, а некоторые другие переменные разделяются только некоторыми из этих и некоторых других модулей. Если я поместил все эти переменные в файл common.h, возникнут какие-либо проблемы (с точки зрения производительности), так как не все переменные будут использоваться всеми модулями?

Использование вышеуказанного метода У меня также возникла проблема, что если я использую типы, определенные в других файлах заголовков, я должен их включить. Я также мог бы использовать макросы #if (определенные «макросы», но это не похоже на наиболее подходящий метод.

ответ

0

Включая extern объявления для неиспользуемых переменных не должны вызывать проблем с производительностью (определенно не во время выполнения, но это будет ввести незаметно небольшие накладные расходы во время компиляции).

Это приведет к тому, что ваш код будет менее ремонтопригодным. Лучшая практика заключается в том, чтобы организовать переменные и функции с глобальным охватом в заголовки, основанные на использовании или назначении. концептуально связаны в одном заголовке, а вещи, которые не связаны друг с другом, идут в разных заголовках. Это упрощает включение необходимых функций, не выталкивая огромное количество нежелательной информации, которую вы не делаете.

Я бы не счел проблемой, что вам нужно включить заголовки, чтобы вытащить определения типов данных. Это лишь часть того, как работает язык C. Вы можете сделать это проще для себя, гарантируя, что все ваши заголовки являются самодостаточными. То есть, если заголовок использует определенный тип данных, этот заголовок должен включать заголовок, где этот тип определен. Таким образом, ваши .c-файлы не должны беспокоиться об анализе заголовка и выяснить, какие другие заголовки должны быть включены. Заголовки, которые не являются самодостаточными, также могут привести к проблемам, когда код создается по-разному (или вообще отсутствует) в зависимости от порядка включения заголовков.

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