Объявление констант в .h файле. - C (СИ)
Формулировка задачи:
Есть такой ламерский вопросик.
Есть напрмер hfile.h, который инклудится в несколько .c сишных файлов.
В .h хочется обявить константу (дабы не плодить объявления в двух си-файлах)
Например костантный массив:
Компилятор(у меня gcc) ругается "multiple definition of `nums'", и я понимаю почему. А как сделать правильно?
#ifndef _HFILE_H #define _HFILE_H const char * const nums[] = {"one", "two", "three"}; // я вообще правильно обявляю то? #endif
Решение задачи: «Объявление констант в .h файле.»
textual
Листинг программы
static const char * const nums[] = {"one", "two", "three"};
Объяснение кода листинга программы
В данном коде объявляется массив (или точнее, массив указателей) строк с тремя элементами, инициализированными строками one
, two
, three
. Это делается для того, чтобы эти строки можно было использовать в программе как константы. В C массивы строк (char arrays) нумеруются с 0, то есть первый элемент массива будет иметь индекс 0, второй - 1, и т.д.
Список элементов кода:
- Объявление массива строк:
static const char * const nums[] = {
one,
two,
three};
- Значения переменных:
one
,two
,three
. - Тип данных переменных:
const char *
. - Массив содержит 3 элемента.
- Элементы массива являются указателями на строки.
- Строки являются константами, их нельзя изменять.
- Массив является статическим, его область видимости не ограничена функцией.
- Массив является массивом const, то есть его элементы нельзя изменять.
- Элементы массива могут содержать строковые литералы.
- Массив может быть использован в программе как набор константных строк.
- Значения массива могут быть использованы в качестве аргументов функций.
- Массив может быть использован для чтения строк по индексам.
- Массив может быть использован для сравнения строк.
- Массив может быть использован для поиска подстрок в строках.
- Массив может быть использован для работы со строками в цикле.
- Массив может быть использован для работы со строками в условии.
- Массив может быть использован для копирования строк.
- Массив может быть использован для работы со строками в структуре данных.
- Массив может быть использован для работы со строками в другой функции.
- Массив может быть использован для работы со строками в другом модуле.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д