LINUX.ORG.RU

одним компилятором для С11/С17 стало больше

 , , ,


0

2

https://devblogs.microsoft.com/cppblog/c11-and-c17-standard-support-arriving-in-msvc/

Если вы хотели писать на С11, но вас останавливало отсутствие поддержки у студии, то теперь этой проблемы нет*.

*атомиков и потоков - пока нету, но планируются, но это необязательные части С11. vla нет и не планируется, так как это небезопасная фича

P.S. ещё одна новость, но вторую тему создавать как-то неправильно, поэтому напишу здесь: C++ модули завезли также в Visual Studio 16.8:

https://devblogs.microsoft.com/cppblog/standard-c20-modules-support-with-msvc-in-visual-studio-2019-version-16-8/

★★★★★

Последнее исправление: fsb4000 (всего исправлений: 1)

проприетарщина не нужна, есть свободный столлманоугодный GCC

Harald ★★★★★
()

Если вы хотели писать на С11, но вас останавливало отсутствие поддержки у студии, то теперь Вас останавливает только отсутствие поддержки линукса

А нахера принес тогда?

SR_team ★★★★★
()
Ответ на: комментарий от SR_team

А нахера принес тогда?

Линуксоиды любят кроссплатформенный софт, и против вендорлока.

Или вендорлок gcc не вендорлок?

fsb4000 ★★★★★
() автор топика
Последнее исправление: fsb4000 (всего исправлений: 1)
Ответ на: комментарий от fsb4000

в каком месте GCC запрещает тебе писать кроссплатформенный код и компилировать его другими компиляторами

Harald ★★★★★
()
Ответ на: комментарий от fsb4000

Линуксоиды любят кроссплатформенный софт, и против вендорлока.

Линуксоиды не любят проприетарные компиляторы, тем более при наличии рабочих альтернатив.

SZT ★★★★★
()
Ответ на: комментарий от Harald

в каком месте GCC запрещает тебе писать кроссплатформенный код и компилировать его другими компиляторами

Ни в каком, но чтобы писать кроссплатформенный код, его нужно и тестировать на нескольких компиляторах, чтобы убедиться что случайно не использовал gcc расширение.

fsb4000 ★★★★★
() автор топика

ах…еть. MS и вдруг новый стандарт С? чоэт они?

anonymous
()
Ответ на: комментарий от fsb4000

чтобы убедиться что случайно не использовал gcc расширение.

Все gcc расширения явно отмечены в документации как gcc расширения, случайно их использовать затруднительно

Harald ★★★★★
()
Ответ на: комментарий от Harald

Все gcc расширения явно отмечены в документации как gcc расширения, случайно их использовать затруднительно

-Wpedantic по-умолчанию не включён, но да, этот флаг показывает расширения gnu.

fsb4000 ★★★★★
() автор топика
Ответ на: комментарий от Harald

Чтобы использовать расширение не обязательно читать документацию, достаточно где-то подсмотреть что «так можно». Многие юзают variadic macros и даже не задумываются.

slovazap ★★★★★
()
Последнее исправление: slovazap (всего исправлений: 1)

Microsoft постепенно всех ЛОХ-ов загоняют в github и облака.
Неужели это не понятно?

anonymous
()

Если вы хотели писать на С11, но вас останавливало отсутствие поддержки у студии

Тогда мы идём к вам! )

то теперь этой проблемы нет*.

Ага как и с c99 проблем нет, нет c99 нет проблем

Есть всея компиляторов GCC, остальное жалкие потуги. Про то что проприетарь и говорить нечего.

Вспомнил балмера, вот если текст по ссылке озвучить получится нечто вроде такого https://www.youtube.com/watch?v=sforhbLiwLA

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от RazrFalcon

MSVC забили на C > C99. Ваш КО.

Да, много лет так и было

For many years Visual Studio has only supported C to the extent of it being required for C++. Things are about to change now

fsb4000 ★★★★★
() автор топика
Ответ на: комментарий от fsb4000

Действительно важный кейс, но я для такой проверки использую clang. В gcc и msvc есть не стандартные фичи (одинаковые в обоих компиляторах), которые работают без передачи компилятору спец флагов

SR_team ★★★★★
()
Ответ на: комментарий от RazrFalcon

хромиум под виндой собирается в msvc. В задачах и пуллреквестах постоянно добавляются просьбы и костыли для кросскомпиляции через gcc, но их игнорируют

SR_team ★★★★★
()

Если вы хотели писать на С11, но вас останавливало отсутствие поддержки у студии

Через clang она поддерживала и раньше, я так yquake2 собирал.

paramon
()
Ответ на: комментарий от paramon

Через clang она поддерживала и раньше

Даже если выбирал clang, то будет ругаться на #include так как этих файлов просто не было

<stdnoreturn.h>
<stdalign.h>
<tgmath.h>

и ждём эти файлы:

<stdatomic.h>
<threads.h>
fsb4000 ★★★★★
() автор топика
Ответ на: комментарий от fsb4000

Линуксоиды любят кроссплатформенный софт, и против вендорлока.

Странные у тебя убеждения. Но даже если это правда, ты поэтому приносишь новость о софте, залоченном на Microsoft Windows? Ты в своём уме?

Или вендорлок gcc не вендорлок?

В случае GCC вендорами являются дистрибутивы. Они имеют возможность пропатчить GCC по своему усмотрению и распространять изменённые версии. Те же права передаются и тебе. Тут вендор-лока просто нет.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)

под оффтопиком использую BCC32c v7.30

anonymous
()
Ответ на: комментарий от RazrFalcon

Стандарт с тремя именами. В С17/C18 даже изменений толком кроме багфиксов нет.

a1batross ★★★★★
()
Ответ на: комментарий от SR_team

хромиум под виндой собирается в msvc

https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md#Setting-up-Windows

<...> The clang-cl compiler is used but Visual Studio’s header files, libraries, and some tools are required. <...>

i-rinat ★★★★★
()
Ответ на: комментарий от fsb4000

Вах. Сколько устаревшего ужаса канет в лету, ммм.

t184256 ★★★★★
()
Ответ на: комментарий от t184256

они почему-то не любят с99 и за последние 20 лет не удосужились сделать его поддержку. хорошо, что есть гцц, весь нормальный софт на си собирается под винду именно им, вернее его братом в виде mingw.

хотя как можно поддерживать с11 не поддерживая с99 - не понятно. наверное решили, что уже позняк метаться, давайте сразу лабать с11, хотя уже с2х на подходе. ну ладно, хоть так.

они по-моему просто реализуют в своём компиляторе си то, что в их же компиляторе с++ и так поддерживается. в с++ появились инициализаторы как в си, о, пора поддерживать с99.

anonymous
()
Ответ на: комментарий от fsb4000
1998 C++98 (ISO/IEC 14882:1998)
2003 C++03 (ISO/IEC 14882:2003)
2011 C++11 (ISO/IEC 14882:2011)
2014 C++14 (ISO/IEC 14882:2014)
2017 C++17 (ISO/IEC 14882:2017)
1989: C89, the ANSI C standard published 
1990: C90, the ANSI C standard accepted as ISO/IEC 9899-1990
1999: C99 (ISO/IEC 9899:1999)
2011: C11 (ISO/IEC 9899:2011)
2018: C17 (ISO/IEC 9899:2018)

Наименование определяется датой публикации. Очевидно, поэтому C17 заменили на C18.

gag ★★★★★
()
Ответ на: комментарий от RazrFalcon

Ждём когда linux/chrome можно будет собрать через msvc

Вообще-то хром именно msvc и собирается под виндой. FOSS компиляторов под винду почему-то не хотят завозить.

byko3y ★★★★
()

vla нет и не планируется, так как это небезопасная фича

ХАХАХА, А alloca это типа безопасная фича?

reprimand ★★★★★
()
Ответ на: комментарий от reprimand

ХАХАХА, А alloca это типа безопасная фича?

alloca выдает предупреждение о несекурности и необходимости юзать malloca. Причем, последняя в отладочной сборке еще и выделяет память в куче вместо стэка.

byko3y ★★★★
()
Ответ на: комментарий от anonymous

как можно поддерживать с11 не поддерживая с99 - не понятно.

Элементарно: поддержка VLA обязательна в C99 и опциональна в C11.

anonymous
()
Ответ на: комментарий от gag

Наименование определяется датой публикации.

Херб Суттер написал что C++20 всегда будет называться C++20, несмотря на то, что есть шанс, что ISO окончательно одобрит стандарт только в 2021, как ISO/IEC 14882:2021.

anonymous
()
Ответ на: комментарий от byko3y

Хром поддерживает только clang. Ваш КО.

О чём и была речь. Толку от этих стандартов, если производительный код можно писать только под. конкретный компилятор. Что гугл и делает.

PS: И это не какие-то интернет-байки. Откройте код той-же Skia, на которой построен хром, там все оптимизации чисто под clang.

RazrFalcon ★★★★★
()
Последнее исправление: RazrFalcon (всего исправлений: 2)
Ответ на: комментарий от RazrFalcon

шланг - говёный компилятор который делает говёные оптимизации основываясь на предположении, что программа написана без ошибок. ты много видел программ написанных без ошибок?

anonymous
()

vla нет и не планируется, так как это небезопасная фича

Лол. На C/C++ вообще писать небезопасно - недоглядишь и у тебя либо утечка памяти, либо переполнение буфера. Они серьёзно считают, что VLA что-то принципиально ухудшает в плане безопасности, заметно сильнее чем 100500 других фич языка?

KivApple ★★★★★
()
Ответ на: комментарий от reprimand

alloca это типа расширение компилятора, в стандарт не входящее. Но сишники этого не знают, лол.

anonymous
()
Ответ на: комментарий от KivApple

недоглядишь и у тебя либо утечка памяти, либо переполнение буфера

С vla доглядеть невозможно, в принципе.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.