Начинание хорошее, но нужно техническое ревью и редактура (в большом количестве). Пролистал несколько первых страниц.
> conio.h
Сейчас 2012 год, а вы рассказываете про conio.h?!
> Объявите в
> программе переменную max типа int и присвойте ей значение на единицу больше
> максимально допустимого.
signed overflow — undefined bahavior в Си. (Если не знаете что это такое — спросите).
> unsigned shot
shot
> Вот по-моему и все.
А как же char? (Да, об этом дальше, но вы же тут приводите список целочисленных типов и заканчиваете фразой «всё» — то есть список претендует быть исчерпывающим) А unsigned int это то же самое что unsigned или нет?
> При выводе длинных чисел
Длинные числа — это длинее двух цифр или как? (Исправьте на long)
> short j = 'b', k = 99;
> int arr[5], nums[N];
Человек впервые в жизни видит Си, а вы ему объявление с множественными деклараторами показываете (которые, кстати, запрещены многими кодстайлами, так что о них можно не рассказывать вообще, разве что в приложении «для тех что хочет знать больше»)
> Вещественные числа
> В языке C существует три типа чисел с плавающей точкой
Что такое точка и почему она плавает? Не хотите раскрывать подробности машинной арифметики — продолжайте называть их вещественными везде.
> Функция sizeof()
функция?! /0 facepalm
> mask = mask | (int)pow(2,N-i-1)
(int) pow(...) конечно, нам повезёт и всё округлится туда, куда нужно, да?
> В языке программирования C существуют так называемые статические переменные.
Вот так вот, одной фразой, смешали три разных понятия языка: object lifetime, object linkage, object scope.
Я думаю что комментатор имел ввиду, что, например, буква A + combining diaresis — это два кодпоинта, но один character. Поэтому один character может состоять из произвольного количества кодпоинтов.
Но если у QList или ещё чего-нибудь есть какие-то методы, расположенные внутри so библиотек, то они скомпилированы для libstdc++ и их вообще нельзя вызывать при компиляции программы с libc++, так как in-memory layout соответствующих классов в этих библиотеках разный.
Просто используйте clang для сборки всего проекта. А то у вас clang использует libc++, а gcc libstdc++. В результате в одной программе будет два STL'я (но это не проблема, libc++ на это рассчитан). А проблема будет когда вы из C++ захотите в ObjectiveC++ передать что-либо из STL.
Если вас интересует почему в конкретной реализации это может привести к сегфолту, то например потому что аллокация обычная и массивов может (и часто происходит) по-разному, а именно, аллокатор создаёт разные структуры данных вокруг пользовательского куска памяти.
> conio.h
Сейчас 2012 год, а вы рассказываете про conio.h?!
> Объявите в
> программе переменную max типа int и присвойте ей значение на единицу больше
> максимально допустимого.
signed overflow — undefined bahavior в Си. (Если не знаете что это такое — спросите).
> unsigned shot
shot
> Вот по-моему и все.
А как же char? (Да, об этом дальше, но вы же тут приводите список целочисленных типов и заканчиваете фразой «всё» — то есть список претендует быть исчерпывающим) А unsigned int это то же самое что unsigned или нет?
> При выводе длинных чисел
Длинные числа — это длинее двух цифр или как? (Исправьте на long)
> short j = 'b', k = 99;
> int arr[5], nums[N];
Человек впервые в жизни видит Си, а вы ему объявление с множественными деклараторами показываете (которые, кстати, запрещены многими кодстайлами, так что о них можно не рассказывать вообще, разве что в приложении «для тех что хочет знать больше»)
> Вещественные числа
> В языке C существует три типа чисел с плавающей точкой
Что такое точка и почему она плавает? Не хотите раскрывать подробности машинной арифметики — продолжайте называть их вещественными везде.
> Функция sizeof()
функция?! /0 facepalm
> mask = mask | (int)pow(2,N-i-1)
(int) pow(...) конечно, нам повезёт и всё округлится туда, куда нужно, да?
> В языке программирования C существуют так называемые статические переменные.
Вот так вот, одной фразой, смешали три разных понятия языка: object lifetime, object linkage, object scope.
Дальше не читал.
Просто это не оператор запятая, а разделитель аргументов — две разные вещи в Си.
Но если у QList или ещё чего-нибудь есть какие-то методы, расположенные внутри so библиотек, то они скомпилированы для libstdc++ и их вообще нельзя вызывать при компиляции программы с libc++, так как in-memory layout соответствующих классов в этих библиотеках разный.
Qt в qiterator.h делает то, чего делать нельзя никогда (и вообще запрещено стандартом):
А в libc++ эти имена находятся в std::__1.
Просто используйте clang для сборки всего проекта. А то у вас clang использует libc++, а gcc libstdc++. В результате в одной программе будет два STL'я (но это не проблема, libc++ на это рассчитан). А проблема будет когда вы из C++ захотите в ObjectiveC++ передать что-либо из STL.