Объявление констант в .h файле. - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Есть такой ламерский вопросик. Есть напрмер hfile.h, который инклудится в несколько .c сишных файлов. В .h хочется обявить константу (дабы не плодить объявления в двух си-файлах) Например костантный массив:
#ifndef _HFILE_H
#define _HFILE_H
 
const char * const nums[] = {"one", "two", "three"}; // я вообще правильно обявляю то?
#endif
Компилятор(у меня gcc) ругается "multiple definition of `nums'", и я понимаю почему. А как сделать правильно?

Решение задачи: «Объявление констант в .h файле.»

textual
Листинг программы
static const char * const nums[] = {"one", "two", "three"};

Объяснение кода листинга программы

В данном коде объявляется массив (или точнее, массив указателей) строк с тремя элементами, инициализированными строками one, two, three. Это делается для того, чтобы эти строки можно было использовать в программе как константы. В C массивы строк (char arrays) нумеруются с 0, то есть первый элемент массива будет иметь индекс 0, второй - 1, и т.д. Список элементов кода:

  1. Объявление массива строк: static const char * const nums[] = {one,two,three};
  2. Значения переменных: one, two, three.
  3. Тип данных переменных: const char *.
  4. Массив содержит 3 элемента.
  5. Элементы массива являются указателями на строки.
  6. Строки являются константами, их нельзя изменять.
  7. Массив является статическим, его область видимости не ограничена функцией.
  8. Массив является массивом const, то есть его элементы нельзя изменять.
  9. Элементы массива могут содержать строковые литералы.
  10. Массив может быть использован в программе как набор константных строк.
  11. Значения массива могут быть использованы в качестве аргументов функций.
  12. Массив может быть использован для чтения строк по индексам.
  13. Массив может быть использован для сравнения строк.
  14. Массив может быть использован для поиска подстрок в строках.
  15. Массив может быть использован для работы со строками в цикле.
  16. Массив может быть использован для работы со строками в условии.
  17. Массив может быть использован для копирования строк.
  18. Массив может быть использован для работы со строками в структуре данных.
  19. Массив может быть использован для работы со строками в другой функции.
  20. Массив может быть использован для работы со строками в другом модуле.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5
Похожие ответы