【发布时间】:2017-12-27 23:30:06
【问题描述】:
从我使用的终端调用 C 中的printf("Hello!");
echo '#include<stdio.h>
void main()
{
printf("Hello!");
}' > foo.c
然后调用gcc foo.c 进行输出。不幸的是,流水线
echo '#include<stdio.h>
void main()
{
printf("Hello!");
}' | gcc
抱怨没有输入文件失败。最终,我想要一个脚本,我可以在其中使用 ./script [command] 从终端编译 C command。任何建议将不胜感激。
【问题讨论】:
-
请问您什么时候想这样做?我看不出它有什么用处。
-
@klutt:如果 C 代码是由某个程序生成的,您可能想要这样做。但确实,这不值得痛苦
-
@klutt 一般来说,管道是一件好事。一般来说,任何程序都应该接受来自标准输入的输入,除非它有很好的理由不这样做。仅仅因为你想不出它的好用处,并不意味着拥有通用能力不是一个好主意。 (现在,话虽如此,我同意很难想到您实际上需要将 C 代码通过管道传输到 C 编译器中的情况。我实现了符号链接技巧 - 如答案中所述 - 许多年前,只是为了好玩,但我认为我从未真正使用过它。)
-
可能不是 OP 想要的,但是在 shell 脚本等中“即时”执行小块 C 的另一种好方法是,如果你碰巧有一个 C 口译员。例如,有这样的解释器,我只需输入
ci -c 'printf("Hello!\n");'。
标签: c gcc compilation pipe