可能重复:
How to write program during compiling?
我在一个满是面试问题的网站上发现了这个问题,并被它难住了。是否有一些预处理器指令允许在编译过程中从标准输入中读取?
写一个小的C程序,它在编译时从输入端获取另一个程序,在运行时给出第二个程序的结果。(注意:关键是,想想UNIX)。假设程序是1.c,则在编译时
$ cc -o 1 1.c
int main() { printf("Hello World\n"); } ^D
$ ./1
Hello World
它证明这个问题是一个完全相同的问题。How to write program during compiling?
发布于 2011-01-14 11:29:49
#include "/dev/stdin"
就是诀窍。
充其量只是一个愚蠢的面试问题。
发布于 2011-01-14 11:41:15
本着先发制人的精神,我试图制作一个更独立于平台/环境的版本。然而,我被困在这里...所以这就是我的问题,我可以用什么来取代‘?’用什么?
#ifdef _WIN32
#include ???
#else
#include "/dev/stdin"
#endif
编辑:多亏了ohmantics,我现在可以通过以下方式获得工作:
#ifdef _WIN32
#include "CON"
#else
#include "/dev/stdin"
#endif
发布于 2011-01-14 11:28:46
您需要告诉编译器从标准输入中获取源代码输入,并对其进行编译。这很可能是一个命令行参数。
这样,您就可以通过管道将另一个程序的输出输入到您的编译器中。
照常编辑,堆栈溢出already had an answer for this.
echo "int main() { return 0; }" | gcc -x c -
EDIT在编译时遗漏了语句。管道技巧在其他方面仍然有效,所以我就把它留在这里。
https://stackoverflow.com/questions/4687701
复制相似问题