1 / 1 / 0
Регистрация: 19.08.2015
Сообщений: 93
|
|
1 | |
Возможна ли компиляция одного и того же исходного кода в разных компиляторах?29.11.2018, 21:01. Показов 842. Ответов 3
Метки нет (Все метки)
Будут ли копии одной и той же программы на Си компилироваться в разных компиляторах или потребуется вносить какие-то изменения в исходный код программы для совместимости с другим компилятором?
0
|
29.11.2018, 21:01 | |
Ответы с готовыми решениями:
3
lwjgl и баг(артефакты в разных местах при повторе одного и того же кода) PHP Возможна ли передача одного и того же атрибута двум объектам form? Компиляция исходного кода Компиляция исходного кода |
57 / 53 / 18
Регистрация: 18.02.2018
Сообщений: 227
|
|
30.11.2018, 07:47 | 2 |
Выдержка из википедии:
"ANSI C сейчас поддерживают почти все существующие компиляторы. Почти весь код Си, написанный в последнее время, соответствует ANSI C. Любая программа, написанная только на стандартном Си, гарантированно будет правильно выполняться на любой платформе, имеющей соответствующую реализацию Си. Однако большинство программ написаны так, что они будут компилироваться и исполняться только на определённой платформе, потому что: 1. они используют нестандартные библиотеки, например, для графических дисплеев; 2. они используют специфические платформо-зависимые средства; 3. они рассчитаны на определённое значение размера некоторых типов данных или на определённый способ хранения этих данных в памяти для конкретной платформы."
1
|
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
|
|
30.11.2018, 09:46 | 3 |
Еще добавлю, что у разных компиляторов существуют собственные расширения. Так, например, майкрософтовский компилятор (не знаю точного названия) активно пропагандирует нестандартные функции printf_s, scanf_s, strcpy_s и тому подобные. Насколько мне известно, ни один другой компилятор такого не поддерживает. Туда же #pragma <library>. А, скажем, CodeVisionAVR (один из компиляторов для микроконтроллеров AVR) обрабатывает конструкции вида PORTB.1, чего опять же не поддерживают остальные.
Добавлено через 2 минуты Если хотите написать кроссплатформенную программу, придется все это учитывать. Но даже так, 100% кроссплатформенности достичь удастся только для самых простых программ. Вам все равно придется использовать платформо-зависимый код (работа с файловой системой, многопточность, сеть). Такой код выносят в специальное место, обзывают "слоем переносимости" и переписывают под каждую добавляемую архитектуру / компилятор.
1
|
57 / 53 / 18
Регистрация: 18.02.2018
Сообщений: 227
|
|
30.11.2018, 16:57 | 4 |
Те же самые WinAPI и conio чего стоят.
Обычно в переносимости очень хорошо помогает cmake.
0
|
30.11.2018, 16:57 | |
30.11.2018, 16:57 | |
Помогаю со студенческими работами здесь
4
Компиляция исходного кода java компиляция исходного кода Динамическая компиляция исходного кода Cmake и компиляция исходного кода Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |