2016-03-09 5 views
4
  1. В приложении с несколькими источниками C, которое является лучшим местом для размещения постоянных значений, самого исходного файла или его заголовочного файла? При условии, что константа будет использоваться только в этом исходном файле.Лучшее место для размещения констант

  2. Это хороший способ сохранить static const в заголовочных файлах?

ответ

5
  1. Не предоставлять информацию вам не нужно. Если константа является деталью реализации единой единицы компиляции, нет необходимости загрязнять глобальное пространство имен. Вы всегда можете добавить его в заголовок позже, если это необходимо.

  2. В зависимости от характера постоянных. static создает новую константу для каждого заголовка блока компиляции. Если константа огромна, лучше определить ее один раз в исходном файле и объявить ее с extern в заголовке.

+0

Спасибо, что бы вы предложили, если мы хотим разделить переменную константы на нескольких исходных блоках? В заголовках или исходном файле? –

+1

@AbhishekKumar Это зависит от использования. Если вам нужно использовать его в постоянных выражениях, вам нужно использовать препроцессор '# define' или' enum'. Для констант времени выполнения: используйте 'static const' в исходном файле для локальных констант или для глобальных констант, нестатических' const' в исходном и 'extern const' этого в заголовке. Вы также можете использовать 'static const' в заголовке для небольших констант, если по какой-то причине постоянная переменная должна иметь внутреннюю связь. Поэтому, чтобы ответить на ваш вопрос, для глобальной константы * variable *, определите ее в источнике и объявите ее как «extern const» в заголовке. – user694733

+0

Я не хочу использовать константы на основе #define, потому что они не предлагают никакой безопасности типов. Я хочу, чтобы в проекте был создан отдельный файл заголовка (и нет исходного файла) только для хранения значений ошибок в виде целых чисел в терминах const int. Можете ли вы объяснить немного больше, когда говорите: «Вы также можете использовать заголовок для небольших констант, если по какой-то причине постоянная переменная должна иметь внутреннюю связь». Почему для меньших констант? И есть ли разница, если я использую/не использовать статическое ключевое слово в константах файла заголовка. –

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