编译C代码而不将其保存在文件中

时间:2015-10-29 11:54:12

标签: c compilation

受到此PCG挑战的启发:https://codegolf.stackexchange.com/q/61836/31033 我问自己,如果在编译这样的工具时(无论是浏览器还是别的东西),是否会尝试尽可能少地留下痕迹,是否有某种方式(针对gcc / clang,因为这可能是预装的命令行在这样一个工作环境中的编译器)将源代码作为命令行参数或相等的机制交给编译器,而不需要将源代码保存为* .c文件,用户通常会这样做吗?

(当然编译器会在编译时生成临时文件,但那些可能不会被扫描。)

1 个答案:

答案 0 :(得分:6)

至少gcc可以,因为它能够从标准输入读取源。你也可以在这里使用Unix字符串bash构造:

gcc -xc - << "int main() { exit(0); }"

或文件sh构造:

gcc -xc - <<MARK
int main() {
  exit(0);
}
MARK

---- ---- EDIT

您还可以想象使用加密技术对源进行编码,动态解读内容并将结果注入gcc的标准输入,如:

uncipher myfile.protected | gcc -xc -