- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
;;
;
;
;;;
void fuck()
{
puts("Fuck!");
getch();
}
void main (int argc, char ** argv) {
char ipstr[] = "192.168.1.140";
int ipint = IPStrToInt(ipstr);
atexit(fuck);
printf("%s == %ld\n",ipstr,ipint);
Init(1,main);
}
void Init(int govno) {
int * p = &govno;
void (*x) ()=(void *) *(p+1);
printf("%x", *p);
x((void *)0);
}
Оказывается, благодаря тому, что компилятору ссей пофиг на количество переданных в функцию аргументов, можно сделать неплохую реализацию while(true), который завершается тогда, когда соседним программам становится не насрать на переполнение стека...
wvxvw 24.10.2012 16:02 # +1
silenter 26.10.2012 07:59 # 0
defecate-plusplus 24.10.2012 16:20 # +7
bormand 24.10.2012 16:22 # +5
HaskellGovno 24.10.2012 16:20 # +6
bormand 24.10.2012 16:21 # 0
HaskellGovno 24.10.2012 16:25 # +2
>silencer
bormand 24.10.2012 16:28 # +11
Компилятор: Простите пожалуйста, но вы забыли написать прототип...
Программист: gcc -w 1.cpp #Заткнись сука и компиль мой код!!! Мне некогда читать твои мляцкие предупреждения!!!
Компилятор: Okay... как скажете...
Программа: segmentation fault *trollface.png*
Программист: (компилятору) Да ты сука упоротая, что ты мне тут насобирал!!!
Fai 24.10.2012 17:42 # +9
Компилятор: А НУ СУКА ФОРМАТИРОВАНИЕ ПОПРАВИЛ ИЛИ НАХУЙ ТВОЮ ПОРНУХУ СОТРУ.
absolut 25.10.2012 10:46 # +6
bormand 25.10.2012 11:00 # +4
/dev/sda1 / type ext3 (rw)
/dev/sda5 /media/pron type ext3 (ro)
# dd if=/dev/urandom of=/dev/sda5
roman-kashitsyn 25.10.2012 13:47 # +2
wvxvw 24.10.2012 20:26 # +1
bormand 24.10.2012 20:34 # +2
ЕМНИП g++ этот тот же gcc просто дефолтовые опции другие.
P.S. Один хрен gcc, если я не гоню, это не компилятор C, это сборочный фронтенд, а настоящие компиляторы спрятаны.
Вроде как настоящие тут:
/usr/lib/gcc/i686-linux-gnu/4.6/cc1
/usr/lib/gcc/i686-linux-gnu/4.6/cc1plus
Fai 25.10.2012 05:36 # −2
Соберёт и не пожалуется. Если там будет Си-код.
bormand 25.10.2012 05:46 # +3
Ну вот только не надо тут мифы создавать. Еще как соберет. Он по расширениям определяет какой бекэнд вызывать. Пруф:
man gcc
For any given input file, the file name suffix determines what kind of compilation is done
man g++
However, the use of gcc does not add the C++ library. g++ is a program that calls GCC and treats .c, .h and .i files as C++ source files instead of C source files unless -x is used, and automatically specifies linking against the C++ library.
Вот и все отличия
roman-kashitsyn 26.10.2012 13:45 # +2
defecate-plusplus 26.10.2012 13:50 # +1
roman-kashitsyn 26.10.2012 13:53 # +1
defecate-plusplus 26.10.2012 13:59 # +1
какая-нибудь древняя версия гцц не дала ему сделать анонимную структуру:
http://ideone.com/yWNWmM
eth0 26.10.2012 18:22 # +3
Выхода нет?
Steve_Brown 26.10.2012 18:51 # +2
silenter 26.10.2012 07:52 # −7
А варнинги я давно привык не читать, когда на чистом С пишу)
bormand 26.10.2012 08:12 # +1
Ну зря, зря, там тем более их не так и много. Ну и в гцц даже на -Wall почти все ворнинги по делу. Разве что unused variable бесит.
sayidandrtfm 26.10.2012 10:28 # +2
Steve_Brown 26.10.2012 11:56 # +1
Это в С++ часто бывает, что аргумент не используется в виртуальных функциях.
TarasB 26.10.2012 12:05 # +2
govnomonad 26.10.2012 14:24 # +1
в cpp файле
Хотя имя переменной можно убрать и h-файле, компилятору нужен лишь тип.
bormand 26.10.2012 15:02 # 0
TarasB 26.10.2012 15:11 # +3
Иногда список параметров с именами является частью макроса, который нельзя менять, потому что он в общем библиотеке.
TarasB 26.10.2012 09:45 # +2
bormand 26.10.2012 10:21 # +4
absolut 26.10.2012 10:40 # +1
absolut 26.10.2012 09:53 # +2
compiler: когда читаю программу С - пишу ворнинги (и не только)
sayidandrtfm 26.10.2012 10:43 # +5
eth0 26.10.2012 12:40 # +2