Файловые переменные

Модератор: Модераторы разделов

mamant
Сообщения: 20
ОС: Slackware 12.1

Файловые переменные

Сообщение mamant »

Есть объявление файловых переменных:

Код: Выделить всё

static FILE
 *display = stdout,
 *opf = stdout;

При компиляции выдаются ошибки:

Код: Выделить всё

smpl.c:30: error: initializer element is not constant
smpl.c:31: error: initializer element is not constant

Подскажите, пожалуйста, что неверно :rolleyes: ?
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5456
ОС: Gentoo

Re: Файловые переменные

Сообщение /dev/random »

Вам же компилятор ясно написал: stdout - это не константа, а статические и глобальные переменные можно инициализировать только константами.
Спасибо сказали:
Аватара пользователя
netelis
Сообщения: 95
ОС: Debian Wheezy i686

Re: Файловые переменные

Сообщение netelis »

на ASP Linux с ядром 2.6.20.4
#include <stdio.h>
int main()
{
static FILE
*display = stdout,
*opf = stdout;
return 0;
};
сохранил как файл cpp
компилится нормально без ошибок и предупреждений может зависит от версии используемого компилятора
я юзал g++ (gcc version 4.0.2)
Спасибо сказали:
Аватара пользователя
netelis
Сообщения: 95
ОС: Debian Wheezy i686

Re: Файловые переменные

Сообщение netelis »

запускается и работает тоже без ошибок
Спасибо сказали:
MiK13
Сообщения: 1289
ОС: Linux Debian

Re: Файловые переменные

Сообщение MiK13 »

Сейчас сам проверил этот же пример.
g++ транслирует нормально.
Также gcc транслирует нормально, если файл .cpp
Если файл .c -- выдаёт вышеуказанные ошибки
Компилятор gcc version 2.95.2 20000220 (Debian GNU/Linux)
Спасибо сказали:
mamant
Сообщения: 20
ОС: Slackware 12.1

Re: Файловые переменные

Сообщение mamant »

Спасибо! Все дело в компиляторе. Этот код взят из модуля языка SMPL, который был написан в 1987 :) . Поэтому компилятор, который я юзаю gcc 4.2.3, и ругается. Устанавливал gcc 3.4.6 тоже самое. Если же этот файл переименовать в *.cpp, то появляется еще куча ошибок. Поэтому решил инициализировать эти переменные в функции инициализации этого модуля :) .
Спасибо сказали: