#include <stdio.h>
extern const char source[];
int main()
{
printf("%s", source);
return 0;
}
asm(
".section .rodata\n"
".global source\n"
"source:\n"
".incbin \"" __FILE__ "\"\n"
".byte 0\n"
);
ウィキペディアによると、クワインは入力を受け取らないと言われています。このため、ファイルから独自のソース コードを読み取るプログラムはカウントされないことを私は知っています。上記のプログラムは、独自のソース コードを読み取って標準出力に出力するだけですが、それはプログラム自体の一部です。従来の quines には通常、同じ場所に文字列が埋め込まれており、特に積極的なオプティマイザが関与している場合は、ソース コード/出力全体にさえ埋め込まれています。
このプログラムはファイルからソース コードをロードして表示しますが、コンパイル時にロードするため、プログラムはまだ入力を受け取りません。それで、それはクワインですか?