みけCATのにっき(仮)
つれづれなるまゝに、日くらし、PCにむかひて、心に移りゆくよしなし事を、そこはかとなく書きつくれば、あやしうこそものぐるほしけれ。
(本当か!?)
出典

コンパイラいじめ

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

コンパイラいじめ

投稿記事 by みけCAT » 14年前

す、すいません!悪気はなかったんです!
ダブルポインタ、トリプルポインタ、、、、、もし、このポインタがどこまでも続いていたら...
というわけで、作ってしまいました!
いくらでもポインタのポインタを作れるソフト!

CODE:

#include 
#include 

/*izime 出力ファイル ポインタの階層 [初期値] [代入する値] [区切り]*/

int main(int argc,char* argv[]) {
	FILE* out;
	int i,j;
	int max;
	int first;
	int next;
	int kugiri;
	if(argc=4?argv[3]:"1");
	next=atoi(argc>=5?argv[4]:"2");
	kugiri=atoi(argc>=6?argv[5]:"0");
	/*おまじない(笑)*/
	fprintf(out,"#include \n");
	fprintf(out,"\nint main(void) {\n");
	/*変数の宣言*/
	fprintf(out,"\tint _0;\n");
	for(i=1;i0 && (j+1)%kugiri==0)fprintf(out,"\n\t    ");
		}
		fprintf(out,"_%d;\n",i);
	}
	fprintf(out,"\n");
	/*ポインタの代入*/
	for(i=1;i0 && (i+1)%kugiri==0)fprintf(out,"\n\t");
	}
	fprintf(out,"_%d=%d;\n",max,next);
	fprintf(out,"\tprintf("%%d\\n",_0);\n");
	/*終了*/
	fprintf(out,"\n\treturn 0;\n}\n");
	fclose(out);
	return 0;
}
たとえば、「izime test.c 10 222 333」として実行すると、

CODE:

#include 

int main(void) {
	int _0;
	int *_1;
	int **_2;
	int ***_3;
	int ****_4;
	int *****_5;
	int ******_6;
	int *******_7;
	int ********_8;
	int *********_9;
	int **********_10;

	_1=&_0;
	_2=&_1;
	_3=&_2;
	_4=&_3;
	_5=&_4;
	_6=&_5;
	_7=&_6;
	_8=&_7;
	_9=&_8;
	_10=&_9;

	_0=222;
	printf("%d\n",_0);
	**********_10=333;
	printf("%d\n",_0);

	return 0;
}
というコードが出力されます。
これで使っていない「区切り」という機能は、*の山の一定数ごとに改行を入れる機能です。
試しに「izime test4.c 10000 222 333 1000」としたところ、10秒ほどかかって48.2MBのコードが出力されました。
コンパイルしてみる。
「gcc -o test4.exe test4.c」
...
gcc さんが書きました:test4.c: In function `main':
test4.c:14958: parser stack overflow before "_4990"
ごめん!やりすぎた!!!
ということは
「izime test5.c 4889 222 333 1000」
「gcc -o test5.exe test5.c」
おお!コンパイル通った!ちゃんと動く!
このコードがほしい人は、PMを送ってください。このプログラムで自分で作成してください。
最後に編集したユーザー みけCAT on 2010年12月18日(土) 16:50 [ 編集 1 回目 ]
理由: カテゴリのつけ忘れを修正。いい加減にしろ俺。

コメントはまだありません。