Я использую пару глобальных переменных в одном из моих файлов .c
, соответствующих одному объявлению extern
, каждый в двух разных файлах .h
(ну, один файл .h
, предварительно обработанный двумя способами) , Один для общественного потребления, а другой для частного использования. Оба являются const
переменными.
Я хочу инициализировать только одну из переменных в моем файле .c
, а затем назначить вторую переменную тому же содержимому. Вот соответствующее содержимое файла .c
на данный момент:
struct List_methods const List = {
.create = List__create,
.create_naughty = List__create_naughty,
// …
};
struct List_methods const Paws__List = List;
… и соответствующий ему .h:
#if defined(EXTERNALIZE)
# define List_methods Paws__List_methods
# define List Paws__List
#endif
// …
struct List_methods {
list (*create) (void);
list (*create_naughty) (void);
// …
} const extern List;
#if defined(EXTERNALIZE)
# undef List_methods Paws__List_methods
# undef List Paws__List
#endif
Цель здесь - обеспечить, чтобы при включении .h
с определенным EXTERNALIZE
включаемый файл получал доступ к переменной Paws__List
, extern
'd к определению в моем файле .c
, Однако, если он включает без этого определения, они получают вместо него extern
'd List
(который я намереваюсь использовать во внутренних файлах, и делаю его доступным, если #include
er хочет это).
Однако, в моем компиляторе присваивается значение Paws__List = List
со следующей ошибкой:
Source/Paws.o/list/list.c:32:40: error: initializer element is not a
compile-time constant
struct List_methods const Paws__List = List;
^~~~
Я ищу любую помощь, которую я могу получить, чтобы сделать эту работу, как описано выше (то есть, чтобы определить два const
имени для одной и той же структуры в моем файле .c
, так что одно или другое может быть ссылается на заголовок .h
.)