我写了一个 C 程序,在编译时嵌入自己的源代码,并在运行时显示它。这算奎因吗?

I wrote a C program that embeds its own source code at compile time and displays it at runtime. Does this count as a quine?

#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"
);

维基百科说 quine 没有输入,我知道,出于这个原因,从文件中读取自己的源代码的程序不算数。上面的程序只是简单地读取自己的源代码并将其打印到标准输出,但它是程序本身的一部分。传统的 quines 通常也会在同一个地方嵌入字符串,如果涉及特别激进的优化器,甚至可能是整个源 code/output。

此程序确实从文件加载源代码以显示它...但它是在编译时加载的,因此程序仍然不接受输入。那么它到底是不是蒟蒻?

根据我收到的评论,我的理解是,不,它不会被视为通常意义上的 quine。

最强的一点,我觉得是@12431234123412341234123做的:程序一旦编译,编译后的形式不能说是输出自己,因为“自己”是二进制,输出的是C源代码.所以编译后的二进制文件无论如何都不会是 quine。源代码也不会,因为 .incbin 行从文件加载源代码。 (发生在编译期也没关系,因为源码需要编译才能运行。)

无论如何,(正如@Raymond Chen 所指出的那样)它不符合 quine 的精神,并且(正如@n. 'pronouns' m. 所指出的那样)没有明确的“法律条文” “让它适合。最重要的是,这取决于您使用的定义。