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 в этих и большинстве других компиляторов нет.

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

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

★★★★

Проверено: Shaman007 ()
Последнее исправление: unsigned (всего исправлений: 4)

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

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

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

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

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

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

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

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

#include <tgmath.h>

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

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

Можно даже глянуть в 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 ★★★★
() автор топика
Ответ на: комментарий от anonymous

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

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

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

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

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

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

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

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

Congratulations! You are somehow managed to do it wrong.

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

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

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

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

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

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

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

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

int buf[256];

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

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

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

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

.

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

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

Сфига это?

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

sv75 ★★★★★
()

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

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

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