LINUX.ORG.RU
 

Опубликован новый стандарт языка C: C11


0

8

Международная Огранизация по Стандартизации (ISO) опубликовала новый международный стандарт языка программирования C: ISO/IEC 9899:2011, ранее известный как C1X. Основные изменения:

  • поддержка многопоточности;
  • улучшенная поддержка юникода;
  • обобщенные макросы (type-generic expressions, позволяют статичную перегрузку);
  • анонимные структуры и объединения (упрощают обращение ко вложенным конструкциям);
  • управление выравниванием объектов;
  • статичные утверждения (static assertions);
  • удаление опасной функции gets (в пользу безопасной gets_s);
  • функция quick_exit;
  • спецификатор функции _Noreturn;
  • новый режим эксклюзивного открытия файла.

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

Некоторые возможности нового стандарта уже поддерживаются компиляторами GCC и Clang. Стоит, однако, отметить, что полной поддержки предыдущего стандарта C99 в этих и большинстве других компиляторов нет.

Последний черновик стандарта

>>> Подробности


[#] Ответ на: комментарий от anonymous 26.12.2011 12:12:44  
>>-----Цитата---->>

Сишка - слишком низкий уровень для СОВРЕМЕННЫХ ОС.

<<-----Цитата----<<

Сиська вообще ни рыба ни мясо. Куда ни плюнь: либо в ассемблер надо лезть (не хватает низкоуровневости), либо грустить по отсутствию высокоуровневых средств. Уж сколько гемора из-за применения этого поделия огребли (одних только дыр тьма), но прыщавым юнцам с алым взором пох на это, главное - прослыть кулхацкером среди одноклассников, показав им собственноручный хэллэувэлд на этом недоязычке, на нем же написан Линукс, и Торвальдс рекомендуэ, вся фигня.

anonymous ()
[#] Ответ на: комментарий от anonymous 26.12.2011 14:42:12  

"Баттхерт неосилятора"-пост

anonymous ()
[#] Ответ на: комментарий от anonymous 26.12.2011 14:44:55  

Это пост-детектор алоглазых подростков, мастурбирующих на сиську. Ты первый попался. Хе-хе.

anonymous ()
[#] Ответ на: комментарий от anonymous 26.12.2011 14:54:56  

Конечно, конечно, каждый школьник любит орать "сам дурак". И чем больше баттхерт, тем сильнее орёт.

anonymous ()
[#] Ответ на: комментарий от anonymous 26.12.2011 15:15:26  

Вот и не ори. Палишься ведь.

anonymous ()
[#] Ответ на: комментарий от anonymous 26.12.2011 13:12:48  

> #include <tgmath.h>

Ты загляни в этот tgmath.h - и станет ясно, почему новый механизм в языке был позарез нужен.

** ()
[#] Ответ на: комментарий от anonymous 26.12.2011 14:42:12  
>>-----Цитата---->>

Куда ни плюнь: либо в ассемблер надо лезть (не хватает низкоуровневости)

<<-----Цитата----<<

Don't use x86, Luke!

()
[#] Ответ на: комментарий от unsigned 26.12.2011 16:09:53  

Можно даже глянуть в glibc changelog:

>>-----Цитата---->>

2000-08-01 Ulrich Drepper <drepper@redhat.com> Joseph S. Myers <jsm28@cam.ac.uk>

* math/tgmath.h: Make standard compliant. Don't ask how.

<<-----Цитата----<<
** ()
[#] Ответ на: комментарий от unsigned 26.12.2011 16:11:30  
Pavval

Дреппер еще тот зайтейник:)

**** ()
[#] Ответ на: комментарий от grusha 26.12.2011 16:09:57  
>>-----Цитата---->>

Don't use x86, Luke!

<<-----Цитата----<<

Tell me more, magister!

anonymous ()
[#] Ответ на: комментарий от anonymous 26.12.2011 15:30:44  
>>-----Цитата---->>

Вот и не ори. Палишься ведь.

<<-----Цитата----<<

Какой лютый баттхерт.

anonymous ()
[#] Ответ на: комментарий от anonymous 26.12.2011 19:21:12  

Too weak, too slow, and too platitude too.

anonymous ()
[#] Ответ на: комментарий от anonymous 26.12.2011 12:34:35  
>>-----Цитата---->>

*BSD, Linux, Solaris, Windows - все написаны на C.

<<-----Цитата----<<

Читай тред, прежде чем писать. Уже обсудили, что написаны они НЕ на Си, а на Си-подобном языке.

anonymous ()
[#] Ответ на: комментарий от matumba 26.12.2011 13:58:06  
Pythonist

Вы прочитали только ту половину поста, которая вам понравилась. Я считаю приделывание костылей порочной практикой. Если в случае D и C# это ещё можно назвать переосмыслением, то уж C++ - форменное приделывание костылей. На Рефале не писал. Lisp и BF - прекрасные языки, с моей точки зрения. Прекрасно соответствуют своей нише.

* ()
[#] Ответ на: комментарий от malbolge 26.12.2011 22:19:51  

Сначала обоснуй своё утверждение. Необоснованные высеры можно необоснованно сливать.

anonymous ()
[#] Ответ на: комментарий от anonymous 26.12.2011 14:42:12  
Pythonist

> Сиська вообще ни рыба ни мясо. Куда ни плюнь: либо в ассемблер надо лезть (не хватает низкоуровневости), либо грустить по отсутствию высокоуровневых средств.

Congratulations! You are somehow managed to do it wrong.

* ()
[#] Ответ на: комментарий от Pythonist 27.12.2011 3:42:12  
Pavval
>>-----Цитата---->>

Lisp и BF - прекрасные языки, с моей точки зрения. Прекрасно соответствуют своей нише.

<<-----Цитата----<<

То есть не нужны.

**** ()
[#] Ответ на: комментарий от Pavval 27.12.2011 11:01:02  
Pythonist

На Лиспе забавно прототипировать. А на Брейнфаке - тренироваться держать в голове много вещей.

* ()
[#] Ответ на: комментарий от chinarulezzz 24.12.2011 17:46:03  

Ну подход к доказательству весьма забавен, показать ошибку в strncpy, используя ошибку в sprintf.

А вообще, просматрывая данный код, у меня возник следующий пример аналогичнoго по смыслу небезопасного кода:

int buf[256];

for(int i=1; i<=256;i++) { buf=0; }

* ()
[#] Ответ на: комментарий от dik 27.12.2011 14:20:08  

Форум съел массив:

int buf[256];
for(int i=1; i<=256;i++) { buf[i]=0 }

.

* ()
[#] Ответ на: комментарий от Pavval 24.12.2011 17:49:43  
>>-----Цитата---->>

И что? gcc по умолчанию не станет же с11 наверняка никогда )

<<-----Цитата----<<
>>-----Цитата---->>

Сфига это?

<<-----Цитата----<<

Gcc по-умолчанию не стал же работать как c89 или как c99, чем с11 лучше?

***** ()
[#]  

thrd_ функции не нужны. МС их не станет реализовывать потому что она (правильно как показал текст стандарта) клала на сишку и увлекается только с++, на юниксах есть птреды которые а) уже работают б) позволяют задавать размер стека. Новый стандарт не будет соответсвует ни одному из этих пунктов. И не будет соответствовать ещё много лет.

Стандарт нужен только комитету для имитирования бурной деятельности, мол смотрите какие мы молодцы - с++ сделали потоки, ну так и мы тоже можем.

anonymous ()