Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
relationer
33 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 118
#1

Что делать, если один компилятор компилирует без ошибок, а второй - нет?

20.01.2015, 22:39. Просмотров 971. Ответов 7
Метки нет (Все метки)

Здравствуйте!

У меня на одну из строчек в проекте компилятор gcc выдает следующее:
error: initializer element is not constant
Прочитав про суть проблемы, я переключил компилятор на clang и последний обработал все файлы и сгенерировал бинарник. Изменение версии необходимого стандарта для обоих компиляторов не изменяет результат.

Комплексный вопрос: что это за особенности компиляторов, корректно ли подобное вообще, какой из компиляторов прав по текущему стандарту и как с этим бороться? А то хоть я люблю clang, человек, который будет компилировать у себя на конечной машине код, может иметь только gcc.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2015, 22:39
Ответы с готовыми решениями:

Почему компилятор не компилирует?
Компилятор выдает ошибку. Вот программа: #include <stdio.h> int...

Написать программу без ошибок. Что она вообще делает
#include <stdio.h> int f(int n) { if(n==0) { return(o); } else...

Что делать, если не получается продумать алгоритм программы?
Недавно занялся изучением программированием, а именно СИ по книге...

LINQ to Objects - не работает код. Ошибок нет, компилирует, но не ищет
Не могу понять, почему не работает этот код Ошибок не дает, компилирует, а не...

Что делать если нет моделей?
Здравствуйте. Собрался написать трехмерную игру, но, так как я увлекаюсь самим...

7
Байт
Эксперт C
17834 / 11861 / 2467
Регистрация: 24.12.2010
Сообщений: 23,834
20.01.2015, 23:05 #2
Цитата Сообщение от relationer Посмотреть сообщение
на одну из строчек
Строчку покажи (ну и ближайшее ее окружение). Просто любопытно...
0
relationer
33 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 118
20.01.2015, 23:47  [ТС] #3
C++
1
2
3
4
5
6
7
// header
typedef unsigned short error;
const extern error NO_ERROR;
 
// source file
const error NO_ERROR = 0;
static error error_state = NO_ERROR; // вот строка, на которую ссылается gcc
Похожий случай и объяснение самой проблемы на Stack Overflow.
Всё, что относится к объявлению данной конкретной строчки.
0
HighPredator
5665 / 1982 / 719
Регистрация: 10.12.2010
Сообщений: 5,724
Записей в блоге: 3
21.01.2015, 08:40 #4
Лучший ответ Сообщение было отмечено relationer как решение

Решение

В данном случае прав тот, который ошибку выдал.
Цитата Сообщение от relationer Посмотреть сообщение
как с этим бороться?
Приводить код в соответствие стандарту.
Цитата Сообщение от relationer Посмотреть сообщение
что это за особенности компиляторов
Не то, чтобы это "особенности" компиляторов. Скорее это "насколько точно в компиляторе реализованы требования стандарта".
4
Evg
Эксперт CАвтор FAQ
19118 / 6959 / 522
Регистрация: 30.03.2009
Сообщений: 19,594
Записей в блоге: 30
21.01.2015, 15:20 #5
Лучший ответ Сообщение было отмечено relationer как решение

Решение

Цитата Сообщение от HighPredator Посмотреть сообщение
Скорее это "насколько точно в компиляторе реализованы требования стандарта"
Тут наверное даже не это. Многие компиляторы работает с какими-нибудь самопальными расширениями и настройками, которые по мнению разработчиков компилятора удобны для пользователя. И это часто вводит в заблуждение новичков, т.к. они считают, что работают на "чистом" языке и если компилятор это ест, значит так можно
2
HighPredator
5665 / 1982 / 719
Регистрация: 10.12.2010
Сообщений: 5,724
Записей в блоге: 3
21.01.2015, 15:43 #6
Evg, соглашусь.
0
gng
734 / 542 / 163
Регистрация: 08.09.2013
Сообщений: 1,461
21.01.2015, 17:36 #7
Цитата Сообщение от HighPredator Посмотреть сообщение
Скорее это "насколько точно в компиляторе реализованы требования стандарта".
Это ещё можно назвать "творческой", а не буквальной интерпретацией стандарта. .
Путаницы, конечно, такое поведение добавляет.
1
Байт
Эксперт C
17834 / 11861 / 2467
Регистрация: 24.12.2010
Сообщений: 23,834
21.01.2015, 18:30 #8
Цитата Сообщение от gng Посмотреть сообщение
Путаницы, конечно, такое поведение добавляет.
Да, это один из кирпичиков Вавилонской Башни
0
21.01.2015, 18:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2015, 18:30

Что делать если ни один файл на компьютере не открывается ?
На компьютер попал вирус, пишет, что все файлы зашифрованы, и дешифратор можно...

Что делать если ни один файл на компьютере не открывается ?
На компьютер попал вирус, пишет, что все файлы зашифрованы, и дешифратор можно...

Что делать с процессором, если нет прироста?
Здравствуйте, помогите пожалуйста , купил процессор б/у, поменял свой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru