Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
|
Не компилится 11.10.06 23:39 Число просмотров: 2412
Автор: Heller <Heller> Статус: Elderman Отредактировано 11.10.06 23:41 Количество правок: 1
|
> main(t,_,a) Udeclared identifiers (все три).
> char Function-style initializer appears to be a function definition
> * Unexpected end of file found
Пытался сам поправить ошибки. Прописывание типов к аргументам main привело только к тому, что копилятор дополнительно начал ругаться на другие вещи (то что он выводит мало относится к коду - видимо, не может разобрать в чем там дело; впрочем, как и я).
У меня первое подозрение и непонимание вызывает переопределние переменной a (если я правильно знаю синтаксис, то переходы на новую строчку ничего не значат, ведь так? Это, как я понял, исключительно для obfuscation?).
Однако я не спец в Си. Куда дальше тыкац?
ЗЫ. Компилирую в MS VC 6.
ЗЗЫ. А не кинешь ссылку на "аналогичное" (понимать бы еще что такое "спираль") на Perl. Не могу найти. Видимо, меня в те времена еще не було на форуме.
|
<programming>
|
Я как то выкладывал перловую спираль. Вот еще поздравлялка с рождеством на Plain C 11.10.06 19:29
Автор: amirul <Serge> Статус: The Elderman
|
/*
LEAST LIKELY TO COMPILE SUCCESSFULLY:
Ian Phillipps, Cambridge Consultants Ltd., Cambridge, England
An appropriate program for December 25th, this consists primarily of
calls to main() combined by a lot of the ternary conditional (?:)
operators. Have you ever seen a more forceful return? The judges note
that this program looked like what you would get by pounding on the keys
of a type writer at random.
*/
#include <stdio.h>
main(t,_,a)
char
*
a;
{
return!
0<t?
t<3?
main(-79,-13,a+
main(-87,1-_,
main(-86, 0, a+1 )
+a)):
1,
t<_?
main(t+1, _, a )
:3,
main ( -94, -27+t, a )
&&t == 2 ?_
<13 ?
main ( 2, _+1, "%s %d %d\n" )
:9:16:
t<0?
t<-72?
main( _, t,
"@n'+,#'{}w+/w#cdnr/+,{}r/*de}+,/*{,/w{%+,/w#q#n+,/#{l,+,/n{n+,/+#n+,/#;\
#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;\
q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; \
r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#\
\
n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;\
{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;\
#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/")
:
t<-50?
_==*a ?
putchar(31[a]):
main(-65,_,a+1)
:
main((*a == '/') + t, _, a + 1 )
:
0<t?
main ( 2, 2 , "%s"):*a=='/'|
main(0,
main(-61,*a, "!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry")
,a+1);}
---
|
|
и такое бывает 13.10.06 17:33
Автор: anonymus Статус: Незарегистрированный пользователь
|
Автор неизвестен:
*** Makefile
--- ./Makefile
************ *** 0** --- 1,2 ----
+ all:
+ while :; do gcc -o x xx.c &> /dev/null; ./x > xx.c; cat xx.c; sleep 1; done
*** xx.c
--- ./xx.c
************ *** 0* --- 1,2 ---
+ #include<stdio.h>
+ char*s,*p;int(i)=0,(j)=0,(f)=0,(y)=0;char(c)=0;int(out)(char(n)){for(;;){if(n==0||f==-1)break;if(f==1||f==3||f==4){if(n==1&&y&1)break;if(c=='"'||c=='\\')putc('\\',stdout),n=((n!=-1)?--n:n);}if(c&&c!=0x20)putc(c,stdout),n=((n!=-1)?--n:n);if(f==0||f==2||f==5){c=s[i++];if(c==64&&f!=5)c=0,f++;else{if(c==0){f=-1;break;}}}else{if(f==1){c=s[j++];if(c==0){for(j=0;p[j]!='#';j++);j++,f++;}}else{if(f==3){c=p[j++];if(c==0)j=0,f++;}else{if(f==4){c=p[j++];if(c=='#')f++;}}}}}return(f);}void(main)(){int(x);char(z);s="#include<stdio.h>char*s,*p;int(i)=0,(j)=0,(f)=0,(y)=0;char(c)=0;int(out)(char(n)){for(;;){if(n==0||f==-1)break;if(f==1||f==3||f==4){if(n==1&&y&1)break;if(c=='\"'||c=='\\\\')putc('\\\\',stdout),n=((n!=-1)?--n:n);}if(c&&c!=0x20)putc(c,stdout),n=((n!=-1)?--n:n);if(f==0||f==2||f==5){c=s[i++];if(c==64&&f!=5)c=0,f++;else{if(c==0){f=-1;break;}}}else{if(f==1){c=s[j++];if(c==0){for(j=0;p[j]!='#';j++);j++,f++;}}else{if(f==3){c=p[j++];if(c==0)j=0,f++;}else{if(f==4){c=p[j++];if(c=='#')f++;}}}}}return(f);}void(main)(){int(x);char(z);s=\"@\";p=\"@\";y=0x80;for(x=0,z=p[0];z!='#';z=p[++x]){if((unsigned)z>=0x40){y^=0x80;if(z&0x80)z^=0x80,y|=1;z-=0x40;if(y&0x80){if(y&2)putc('\"',stdout),y^=2,z--;z=out(z);if(z==-1)break;if(y&1){if(z==1||z==3||z==4)putc('\"',stdout),y=0x82;else{y=0x80;}putc('\\n',stdout);}}else{for(;z>0;z--)putc(0x20,stdout);}}}out(-1);}";p="@С@y@Ц@y@Ц@y@Ц@y@Ц@WaЧ@TgФ@TgФ@TIWGФ@TIXFФ@TIXFФ@TIXFФ@TIXFФ@TIXFФ@TIYEФ@TgФ@TgФ@TIXFФ@NAEIXFФ@TIXFФ@TIXFФ@TH[DФ@y@Ц@y@y@y@#@С@y@Ь@y@Ь@y@Ь@y@Ь@RI^JТ@QK]IУ@QK]JТ@PL]JТ@PL]JТ@PL]JТ@PL]JТ@PL]JТ@PL]JТ@PsТ@PsТ@PsТ@PsТ@PM\\JТ@PM\\JТ@PM\\JТ@PM\\JТ@PM\\JТ@PM\\JТ@PM\\Jy@y@y@y@#@С@y@Ь@y@Ь@y@Ь@y@Ь@RqТ@RqТ@RqТ@QsIAЗ@bOд@bOд@bO]AЖ@bOд@bOд@bOд@bOд@bOд@bOд@cNд@bOд@bOд@bOд@bOд@bOд@y@y@y@y@y@#@С@y@Ь@y@Ь@y@Ь@y@Ь@RqТ@RqТ@RqТ@OABKXNCAО@RKXNТ@RKYMТ@RK[KТ@RK\\JТ@RK\\JТ@RK\\JТ@RK\\JТ@RK]IТ@RK^HТ@RK_GТ@RK_GТ@RK_GТ@RK_GТ@RqТ@RpУ@TmФ@VjХ@y@Ь@y@#@С@y@Ь@y@Ь@y@Ь@y@Ь@ULTLФ@ULTLФ@MBFLTLФ@ULTLФ@ULTLФ@UKULФ@ULTLФ@ULTLФ@ULTLФ@UlФ@UlФ@UlФ@ULUKФ@ULUKФ@ULUKФ@ULNAFKФ@ULUKФ@ULUKФ@ULUKФ@ULUKФ@ULUKФ@y@#@С@y@Ь@y@Ь@QIQGSGЙ@OKRHOHК@NDDDSHLIЛ@LEEETGIHО@KEGDUFHGР@HGHDVFFGС@HFIDXEDFУ@GFJDXECFФ@GEKD[IЦ@FELD\\GЧ@FELD\\GЧ@EEMD[GШ@EEMDZFЪ@DENDYGЪ@DDODXGЫ@DDODXFЬ@CEODVGЭ@CENEUGЮ@BFNETGЯ@BFNESHЯ@y@#@С@y@Ь@y@Ь@KRRTТ@GVQUТ@GWPUС@HFJFQHЮ@WGQIЬ@WFRIЭ@TGTNШ@QHUOШ@OGXOGAKAД@LIYIЮ@MJWIЮ@NJVIЮ@OKTIЮ@RJRVС@THRVТ@UHQVС@TINABVС@RJщ@OIy@Д@JJy@И@FIy@Н@y@#@С@y@Ь@y@Ь@y@Ь@LjЯ@JoЬ@HAAoЬ@GABI^JЪ@JI`IЩ@JIbHШ@JIbHШ@JIbHШ@JIcGШ@JIcGШ@JIbGЩ@JI`HЪ@JI]HЭ@JIZIЯ@KHWHг@JISIж@JIOLз@JIOHл@JIKIо@JIJGс@JIGGф@JICHч@JQy@Б@JOy@Г@JLy@Ж@JJy@И@JJy@И@JJy@И@JJy@И@JJy@И@JJy@#";y=0x80;for(x=0,z=p[0];z!='#';z=p[++x]){if((unsigned)z>=0x40){y^=0x80;if(z&0x80)z^=0x80,y|=1;z-=0x40;if(y&0x80){if(y&2)putc('"',stdout),y^=2,z--;z=out(z);if(z==-1)break;if(y&1){if(z==1||z==3||z==4)putc('"',stdout),y=0x82;else{y=0x80;}putc('\n',stdout);}}else{for(;z>0;z--)putc(0x20,stdout);}}}out(-1);}
+
|
| |
Не собирается 16.10.06 13:41
Автор: amirul <Serge> Статус: The Elderman
|
[root@localhost shm]# patch -p0 <1.diff;make
(Stripping trailing CRs from patch.)
patching file Makefile
(Stripping trailing CRs from patch.)
patching file xx.c
Makefile:4: warning: overriding commands for target `while'
Makefile:2: warning: ignoring old commands for target `while'
make: Nothing to be done for `all'.
[root@localhost shm]#
|
| | |
Все собирается 16.10.06 14:28
Автор: :-) <:-)> Статус: Elderman
|
Просто <TAB> съелся
all:
while :; do gcc -o x xx.c &> /dev/null; ./x > xx.c; cat xx.c; sleep 1; done
---
|
| | | |
Не собирается 16.10.06 15:05
Автор: amirul <Serge> Статус: The Elderman
|
> Просто <TAB> съелся > > all:
> while :; do gcc -o x xx.c &> /dev/null; ./x
> > xx.c; cat xx.c; sleep 1; done
> ---
Это первое, что я попробовал. make мне все так же выдает, что для сборки all ничего не надо. Я ему и зависимость от xx.c давал - не помогло
|
| | | | |
Хотя теперь это и неважно, но 17.10.06 11:04
Автор: :-) <:-)> Статус: Elderman
|
> Это первое, что я попробовал. make мне все так же выдает, > что для сборки all ничего не надо. Я ему и зависимость от > xx.c давал - не помогло
точно ли у тебя в Makefile стоял <tab>, а не пробелы?
Может быть, твой редактор автоматом заменяет <tab> на n пробелов?
|
| | | | | |
Вот тут не уверен 17.10.06 12:01
Автор: amirul <Serge> Статус: The Elderman
|
> точно ли у тебя в Makefile стоял <tab>, а не пробелы? > Может быть, твой редактор автоматом заменяет <tab> на > n пробелов? Midnight Commander это был с дефолтными для федоры 4 настройками. Надо было конечно хексы глянуть, но я удовлетворился тем, что курсор прыгал через все пространство разом, а не посимвольно: во всех редакторах - верный признак таба.
|
| | | | | | |
Ну тогда все ясно 17.10.06 12:26
Автор: :-) <:-)> Статус: Elderman Отредактировано 17.10.06 12:27 Количество правок: 1
|
> Midnight Commander это был с дефолтными для федоры 4 > настройками. Надо было конечно хексы глянуть, но я > удовлетворился тем, что курсор прыгал через все > пространство разом, а не посимвольно: во всех редакторах - > верный признак таба.
Ну тогда все ясно :)
Значит в mcedit была включена опция Fake half tabs, и это был не настоящий Tab, а четыре (точнее tab_spacing/2) пробела :)
|
| | | | | | | |
О-о-о. /me грязно ругается на тех, кто все это придумал 17.10.06 13:52
Автор: amirul <Serge> Статус: The Elderman
|
> Ну тогда все ясно :) > Значит в mcedit была включена опция Fake half tabs, и это > был не настоящий Tab, а четыре (точнее tab_spacing/2) > пробела :)
Ничего не буду писать о конкретных системах дабы не разводить очередной флейм, но блин это ж надо сделать настолько неочевидное и неинтуитивное поведение.
|
| | | | |
Хм 16.10.06 15:30
Автор: :-) <:-)> Статус: Elderman
|
У меня вот так (после добавления tab):
$ patch <11.patch
patching file Makefile
patching file xx.c
$ make
while :; do gcc -o x xx.c &> /dev/null; ./x > xx.c; cat xx.c; sleep 1; done
#include<stdio.h>char*s,*p;int(i)=0,(j)=0,(f)=0,(y)=0;char(c)=0;int(out)(char(n)){for(;;){if(n==0||f==-1)break;if(f==1||f==3||f==4){if(n==1&&y&1)break;if(c=='"'||c=='\\')putc('\\',stdout),n=((n!=-1)?--n:n);}if
...
поскипано
В общем там мало интересного, программа сама себя на экран выводит
|
| | | | | |
Ну чего должен делать makefile я понял 16.10.06 17:02
Автор: amirul <Serge> Статус: The Elderman
|
> поскипано > В общем там мало интересного, программа сама себя на экран > выводит
И на результат посмотрел. Уж не знаю, то ли это БТ-шный парсер побил код, то ли код рассчитан на строго определенный тип терминалов, но в результате он выводит какой то мусор. Хотя в целом идея интересная: сделать на нединамическом языке вещи, присущие чисто динамическим. Извращение, конечно, но довольно интересное извращение.
|
| | | | | | |
Извращение совсем в другом 16.10.06 19:58
Автор: anonymus Статус: Незарегистрированный пользователь
|
> > поскипано > > В общем там мало интересного, программа сама себя на > экран > > выводит
Она не только себя выводит, но и форматирует так, что проступают буквы.
Просто смотреть надо под иксами или в фреймбуфере.
|
| | | | | | | |
Смотрел под X-ми, но проступающих букв не увидел 16.10.06 22:53
Автор: :-) <:-)> Статус: Elderman Отредактировано 16.10.06 22:54 Количество правок: 1
|
> Она не только себя выводит, но и форматирует так, что > проступают буквы. > Просто смотреть надо под иксами или в фреймбуфере.
Смотрел под X-ми, но проступающих букв не увидел :)
Исходник наверное покорежился при постинге.
Может покажешь скриншот, чтобы все оценили глубину замысла создателя сего шедевра?
|
| | | | | | | | |
Лучше вместо скриншота выложить сам непокореженный исходник куда нибудь на slil.ru 17.10.06 00:59
Автор: amirul <Serge> Статус: The Elderman
|
|
|
Не компилится 11.10.06 23:39
Автор: Heller <Heller> Статус: Elderman Отредактировано 11.10.06 23:41 Количество правок: 1
|
> main(t,_,a) Udeclared identifiers (все три).
> char Function-style initializer appears to be a function definition
> * Unexpected end of file found
Пытался сам поправить ошибки. Прописывание типов к аргументам main привело только к тому, что копилятор дополнительно начал ругаться на другие вещи (то что он выводит мало относится к коду - видимо, не может разобрать в чем там дело; впрочем, как и я).
У меня первое подозрение и непонимание вызывает переопределние переменной a (если я правильно знаю синтаксис, то переходы на новую строчку ничего не значат, ведь так? Это, как я понял, исключительно для obfuscation?).
Однако я не спец в Си. Куда дальше тыкац?
ЗЫ. Компилирую в MS VC 6.
ЗЗЫ. А не кинешь ссылку на "аналогичное" (понимать бы еще что такое "спираль") на Perl. Не могу найти. Видимо, меня в те времена еще не було на форуме.
|
| |
Компилится без ошибок и ворнингов 12.10.06 17:02
Автор: amirul <Serge> Статус: The Elderman
|
> > main(t,_,a) > Udeclared identifiers (все три). > > char > Function-style initializer appears to be a function > definition > > * > Unexpected end of file found
Причем как в vc так и в gcc
> У меня первое подозрение и непонимание вызывает > переопределние переменной a (если я правильно знаю > синтаксис, то переходы на новую строчку ничего не значат, > ведь так? Это, как я понял, исключительно для > obfuscation?).
Никакое не переопределение. Это старый синтаксис аргументов. В скобках они просто перечисляются, после скобок указываются их типы.
> ЗЗЫ. А не кинешь ссылку на "аналогичное" (понимать бы еще > что такое "спираль") на Perl. Не могу найти. Видимо, меня в > те времена еще не було на форуме. http://bugtraq.ru/cgi-bin/forum.mcgi?type=sb&b=6&m=93458
С тех пор я пробовал, ничего оно не удаляет - просто крутится :-)
|
| |
Все компилится 12.10.06 00:07
Автор: :-) <:-)> Статус: Elderman
|
Это C, а не C++
Расширение у файла должно быть .c, а не .cpp
D:\1212>cl ny.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
ny.c
Microsoft (R) Incremental Linker Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
/out:ny.exe
ny.obj
|
|
|