У меня есть функция, определенная в библиотеке заголовка только что выглядит следующим образом:Как инициализировать заголовок только глобальную переменную в C
inline bar **foo_ptr() {
static bar *value = NULL;
return &value;
}
Это мой хаком способ инициализации глобальную переменную, не определяя его в файле * .c.
Это компилируется в VS2010 (после #define inline __inline), но в любой попытке скомпилировать его в MinGW умирает в разгромной подгонке множества ярости определений. Это делает меня очень грустным.
AFAIK, я не могу просто использовать функцию static inline
, так как это создаст несколько вхождений значений, которые для этой ситуации являются очень плохими.
Какие ключевые слова я должен использовать, чтобы сделать эту работу? Неужели я не ошибаюсь? Есть ли альтернативный способ инициализации глобальной переменной только для заголовка в NULL?
Я бы предпочел держаться подальше от методов init.
спасибо: D
_Why_ вам нужна глобальные переменный заголовок только? У вашего рабочего места есть какой-то корпоративный стандарт, ограничивающий количество файлов C, которые вы разрешили использовать? :-) – paxdiablo
Почему бы просто не использовать глобальную переменную? Это то, что вы делаете, просто на самом деле запутанным образом. –
@paxdiablo: Да. Я работаю над очень маленькой библиотекой, и кажется, что такой отход делает пользователь компилировать дополнительный файл c _just_ для одной переменной. В этом смысле мое рабочее место (My House) имеет корпоративный (My House Inc.) стандарт (стандарт My House) для этого проекта, ограничивающий количество файлов C до нуля. : D – YellPika