Информация об изменениях

Сообщение Re[14]: Достаточно ли знать С без знания С++ для устройства от 05.09.2014 7:11

Изменено 05.09.2014 7:15 eskimo82

E>>>>C11 когда приняли ? а когда появились всякие __sync_fetch_and_sub ?
C>>>И что дальше-то?
E>>Причинно-следственная связь.
C>А она есть. Сначала появился драфт в комитете С++, потом его принял комитет С.
А перед этим появились различные интересные функции в компиляторах для Си.

C>>>Всё ОК.

E>>Не позорься:
E>>1. В языке Си есть 3 непересекающихся (в отличии от C++) пространства имен — для struct, union, enum и глобальное для typedef. Твой код просто не соберется, ибо test_t не определен в глобальном пространстве имен. Он собрался бы, если бы ты написал struct test_t testit().
C>И що?
Не позорься, вот и то.

E>>2. Возвращать структурные типы стало можно в C99.

C>Бредишь. Это возможно чуть ли не с K&R C, точно было в C89. Классика жанра — возвращение структуры POINT в WinAPI.
1. Что я неприпоминаю, что там за функция в Win32 API возвращает POINT. Можеш напомнить ?
2. У микрософтовского компилятора есть свои специальные надстройки над языком. Еще расскажи тут, что uuidof является частью C++.

C>>>Нет, это полный список.

E>>Это не полный список, как минимум потому, что ты в него не включил даже того о чем написал сам.
C>Нету в С преимуществ.
Исходя из разговора с тобой, мне видно, что языка Си ты вообще-то незнаеш. Грубая путаница с C++.

C>>>Да ну?

E>>Именнно так:
C>Это не эквивалентный код. В Java используется reference-тип.
И там и там приведен код который обьекта — агрегата.

C>>>Про всякие int'ы вообще молчу.

E>>С интами как раз все прекрасно. Неиниуиализированые значения не приводят к падению.
C>
C>class fault_t
C>{
C>    int *ptr;
C>public:
C>    void do_something()
C>    {
C>         if (ptr) printf("%d\n", *ptr); //Whoopsie
C>    }
C>};
C>

C>Оно скомпилируется и будет падать.
Как мы видим, здесь указатель, а не int. Какой неприкрытый фейл...

C>>>Только что подрочил уже.

E>>Хм, просто показал что можно выстрелить себе в ногу можно в любом языке и развеял очередной миф.
C>В С это делается на порядки проще.
Куда уж проще чем в Java-то ? Тебя носом даже в пример потыкали.

C>>>Не разбухивают, по сравнению с макросами.

E>>Да ну ? Давай приводи сравнительный пример.
C>Создай пару контейнеров, разворачивающихся в static-функции.
В Си это делается на порядок проще. Но ты пример ты так и не привел, ожидаем-с.
Re[14]: Достаточно ли знать С без знания С++ для устройства
E>>>>C11 когда приняли ? а когда появились всякие __sync_fetch_and_sub ?
C>>>И что дальше-то?
E>>Причинно-следственная связь.
C>А она есть. Сначала появился драфт в комитете С++, потом его принял комитет С.
А перед этим появились различные интересные функции в компиляторах для Си.

C>>>Всё ОК.

E>>Не позорься:
E>>1. В языке Си есть 3 непересекающихся (в отличии от C++) пространства имен — для struct, union, enum и глобальное для typedef. Твой код просто не соберется, ибо test_t не определен в глобальном пространстве имен. Он собрался бы, если бы ты написал struct test_t testit().
C>И що?
Не позорься, вот и то.

E>>2. Возвращать структурные типы стало можно в C99.

C>Бредишь. Это возможно чуть ли не с K&R C, точно было в C89. Классика жанра — возвращение структуры POINT в WinAPI.
1. Что я неприпоминаю, что там за функция в Win32 API возвращает POINT. Можеш напомнить ?
2. У микрософтовского компилятора есть свои специальные надстройки над языком. Еще расскажи тут, что uuidof является частью C++.

C>>>Нет, это полный список.

E>>Это не полный список, как минимум потому, что ты в него не включил даже того о чем написал сам.
C>Нету в С преимуществ.
Исходя из разговора с тобой, мне видно, что языка Си ты вообще-то незнаеш. Грубая путаница с C++.

C>>>Да ну?

E>>Именнно так:
C>Это не эквивалентный код. В Java используется reference-тип.
И там и там приведен код который обьекта — агрегата.

C>>>Про всякие int'ы вообще молчу.

E>>С интами как раз все прекрасно. Неиниуиализированые значения не приводят к падению.
C>
C>class fault_t
C>{
C>    int *ptr;
C>public:
C>    void do_something()
C>    {
C>         if (ptr) printf("%d\n", *ptr); //Whoopsie
C>    }
C>};
C>

C>Оно скомпилируется и будет падать.
Как мы видим, здесь указатель, а не int. Какой неприкрытый фейл...

C>>>Только что подрочил уже.

E>>Хм, просто показал что можно выстрелить себе в ногу можно в любом языке и развеял очередной миф.
C>В С это делается на порядки проще.
Куда уж проще чем в Java-то ? Тебя носом даже в пример потыкали.

C>>>Не разбухивают, по сравнению с макросами.

E>>Да ну ? Давай приводи сравнительный пример.
C>Создай пару контейнеров, разворачивающихся в static-функции.
В Си это делается на порядок проще. Но пример ты так и не привел, ожидаем-с.