Форум программистов, компьютерный форум, киберфорум
Наши страницы

C для начинающих

Войти
Регистрация
Восстановить пароль
 
relationer
33 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 118
#1

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

20.01.2015, 22:39. Просмотров 465. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Что делать, если один компилятор компилирует без ошибок, а второй - нет? (C (СИ)):

Почему компилятор не компилирует? - C (СИ)
Компилятор выдает ошибку. Вот программа: #include <stdio.h> int main(void){ printf("What is your name?\n"); ...

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

Что делать, если не получается продумать алгоритм программы? - C (СИ)
Недавно занялся изучением программированием, а именно СИ по книге "Программирование СИ" (Брайан Керниган, Деннис Ридчи). Очень нравится это...

LINQ to Objects - не работает код. Ошибок нет, компилирует, но не ищет - C#
Не могу понять, почему не работает этот код Ошибок не дает, компилирует, а не ищет public void SurnameSearchLINQ() { ...

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

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

7
Байт
Эксперт C
17712 / 11733 / 1870
Регистрация: 24.12.2010
Сообщений: 23,523
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
5645 / 1961 / 372
Регистрация: 10.12.2010
Сообщений: 5,681
Записей в блоге: 3
21.01.2015, 08:40 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
В данном случае прав тот, который ошибку выдал.
Цитата Сообщение от relationer Посмотреть сообщение
как с этим бороться?
Приводить код в соответствие стандарту.
Цитата Сообщение от relationer Посмотреть сообщение
что это за особенности компиляторов
Не то, чтобы это "особенности" компиляторов. Скорее это "насколько точно в компиляторе реализованы требования стандарта".
4
Evg
Эксперт CАвтор FAQ
18909 / 6868 / 503
Регистрация: 30.03.2009
Сообщений: 19,336
Записей в блоге: 30
21.01.2015, 15:20 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от HighPredator Посмотреть сообщение
Скорее это "насколько точно в компиляторе реализованы требования стандарта"
Тут наверное даже не это. Многие компиляторы работает с какими-нибудь самопальными расширениями и настройками, которые по мнению разработчиков компилятора удобны для пользователя. И это часто вводит в заблуждение новичков, т.к. они считают, что работают на "чистом" языке и если компилятор это ест, значит так можно
2
HighPredator
5645 / 1961 / 372
Регистрация: 10.12.2010
Сообщений: 5,681
Записей в блоге: 3
21.01.2015, 15:43 #6
Evg, соглашусь.
0
gng
686 / 532 / 141
Регистрация: 08.09.2013
Сообщений: 1,413
21.01.2015, 17:36 #7
Цитата Сообщение от HighPredator Посмотреть сообщение
Скорее это "насколько точно в компиляторе реализованы требования стандарта".
Это ещё можно назвать "творческой", а не буквальной интерпретацией стандарта. .
Путаницы, конечно, такое поведение добавляет.
1
Байт
Эксперт C
17712 / 11733 / 1870
Регистрация: 24.12.2010
Сообщений: 23,523
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
Привет! Вот еще темы с ответами:

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

Что делать если нет функции Tools - C++
А у меня нет функции Tool что делать?????

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

Что делать, если в биос нет вкладки advenced? - Прошивки BIOS
Нужно включить виртуализацию. Добавлено через 9 минут Версия bios Insyde Corp. V1.08, 12.09.2014 Режим bios UEFI Изготовитель...


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

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

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