Как вы делите постоянный массив строк между файлами?

Прошло очень много времени с тех пор, как я на самом деле кодировал прямо на C (даже не на C++, а на c), и я знаю, как использовать ключевое слово extern для совместного использования переменной между отдельными файлами .c, но я не могу вспомнить, как разделить константу данные между файлами?

Например, скажем, у меня есть это... (обратите внимание, это не код c (или если это так, то это случайность), а скорее псевдокод, чтобы показать, что я хочу):

const char const * WEEKDAYS[] = {
    "Sunday",
    "Monday", 
    "Tuesday"
}

Теперь я пытаюсь создать массив указателей на символы, которые указывают на данные. Опять же, это постоянные данные, поэтому я хотел бы просто определить их в заголовке напрямую, но именно здесь я не могу понять, как это сделать, или если это не то, как вы все равно должны это делать, и вы все равно должны объявите его в файле c, а затем используйте extern в заголовке, который вы включаете в другом месте.

Опять же, прошло много времени с тех пор, как мне приходилось иметь дело с этим благодаря более новым, более современным языкам, но надеюсь, что вы можете помочь.


person Mark A. Donohoe    schedule 06.02.2012    source источник
comment
extern const char* const WEEKDAYS[]; у меня работает. Обратите внимание, что я не указал размер массива. Посмотрим, поправит ли нас кто-нибудь.   -  person Mahesh    schedule 06.02.2012


Ответы (1)


Это то же самое, что и для переменных:

// header
extern const char * const WEEKDAYS[3];

// implementation
const char * const WEEKDAYS[3] = {
    "Sunday",
    "Monday",
    "Tuesday"
};

Также вы, вероятно, хотите const char * const, а не const char const *, что является недопустимым синтаксисом.

person Seth Carnegie    schedule 06.02.2012
comment
все еще бесполезно, если вы хотите поделиться между связанными модулями - внешний вид в порядке, но массив является повторяющимся символом - person Rhubarb; 31.01.2021