LINUX.ORG.RU

Вопросы по фичам C99


0

0

Изучаю Си и наткнулся что в стандарте за 99 год добавили много вкусностей. Плюсовые комменты, определение переменных в любом месте, булевский тип.

Насколько тру использовать эти нововведения?

anonymous

Ответ на: комментарий от cvv

Я тоже пользуюсь. Мне и так Си больше нравится, чем Си++, а теперь с С99 Си++ отдыхает.

hibou ★★★★★
()

Если тебе нужна переносимость, но те стОит. Компиляторы с поддержкой C99 есть ещё далеко не везде.

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

gcc это понимает ещё с времён царя Опэнька. Так что вопрос больше в переносимости на компилеры отличные от gcc. А с99 действительно мало компилеров понимает:(

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

>gcc это понимает ещё с времён царя Опэнька.

К сожалению, до сих пор не полностью. Массивы переменной длины там до сих пор не доделаны. Момент вычисления выражения размера массива в gcc не определен, я пару раз накалывался на этом (правда это был не просто массив, а typedef для двумерного массива) , изучал ассемблерные листинги, и действительно, вместо правильной второй размерности массива используется какая-то чепуха. О статусе C99 в gcc можно почитать тут: http://gcc.gnu.org/c99status.html

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

А сам стандарт мне нравится, если не злоупотреблять массивами переменной длины, то gcc нормально все компилит.

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

я вёл речь только о трёх этих фишках:

Плюсовые комменты, определение переменных в любом месте, булевский тип.

о остальном - не спорю.

Компилеры более менее понимающие C99 можно посчитать на пальцах одной руки и я очень доволен что gcc в их числе.

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

> Компилеры более менее понимающие C99 можно посчитать на пальцах одной руки и я очень доволен что gcc в их числе.

Интересует именно gcc и микрософтский... Никто не пробовал под VS эти фишки?

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

Компилер от Intel поддерживает C99, по поводу VS не знаю.

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

>Плюсовые комменты, определение переменных в любом месте

В настоящее время это есть практически в любом компиляторе. Точнее, поддержка плюсовых комментов появилась в большинстве из них до появления C99.

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

Недфвно компилял сишный код на AIX 5.2 компилятором VisualAge 6.0. Он так витиевато меня обматерил по поводу плюсового комментария, что пришлось в Гугл лезть за переводом. Правда, потом нашлась опция, которая переводит соответсвующий еррор в ворнинг...

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

И что? ты предлагаешь в виндах использовать костыли в виде cygwin.dll вместо родных микрософтовских dll'ек. Да и писать код, который компилируется одним компилятором это признак дурного тона.

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

а mingw уже отменили?

> Да и писать код, который компилируется одним компилятором это признак дурного тона.

делать компиляторы которые не поддерживают новых стандартов это вообще моветон...

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

>ты предлагаешь в виндах использовать костыли в виде cygwin.dll вместо родных микрософтовских dll'ек

Лучше вобще винды не использовать со всеми их дллками :)

>Да и писать код, который компилируется одним компилятором это признак дурного тона.

Писать код под компиляторы это вобще признак дурного тона. Писать надо код соответствующий стандартам. С99 это стандарт, мсвс - нет.

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

>Плюсовые комменты, определение переменных в любом месте, булевский тип.

Кстати нах в С булевский тип я так и не понял. А вот плюсовые коменты и определения переменных это прикольно.

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

когда C99 станет общепринятым стандартом, то будем писать под него, а пока приходится писать либо под C89 либо под обрубки от C99.

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

один хер инородную dll'ку тащить с собой надо

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

Да и вообще, если забыть про C99, а вспомнить про C++98, скорость компиляции и отладку, то mingw+gcc и рядом не валялся с msvc, особенно учитывая бесплатность последнего ...

Поэтому, считаю, что использовать mingw в виндах это всё равно что дрочить в присядку, стоя в гамаке.

Reset ★★★★★
()

хто там говорит про объявление переменных не только в начале и булевский тип? вы что, вообще охерели? читайте кернигана-ричти секонд едишн, нет подобного в стандарте

переменные объявлять где попало в случае без гото может и прикольно, но в стандарт это вносить можно только хорошо покурив, а про булев тип вообще говорить нечего - на кой хер он в сях - непонятно

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

> Поэтому, считаю, что использовать mingw в виндах это всё равно что дрочить в присядку, стоя в гамаке.

Может быть, но многие свободные проги хорошо если для mingw адаптированы, а о msvc "знают" очень не многие.

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

> Вот интересно, делается ли что нибудь вкусное в стандарте после C99 или забили?

Зачем? Есть же Ада с ещё большей кучей вкусностей. И даже те вкусности, которые вроде бы есть в C99 и C++, в Аде реализованы так, что ими действительно можно пользоваться.

> Массивы переменной длины там до сих пор не доделаны. Момент вычисления выражения размера массива в gcc не определен, я пару раз накалывался на этом (правда это был не просто массив, а typedef для двумерного массива) , изучал ассемблерные листинги, и действительно, вместо правильной второй размерности массива используется какая-то чепуха.

Например, эта.

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