无输入编译

Compile without input

我正在尝试在 shell 脚本中使用 GCC,但我不想使用输入文件,而是使用包含我的代码的变量。

现在我这样做了:

echo '
#include <stdio.h>

int main(){
  int a=1,b;
  printf("Donnez un nombre : ");
  scanf("%d", &b);
  a+=b;
  printf("test%d\n",a );
  return 0;
}
' > .temp.c
#Entrez le texte ici

gcc .temp.c -o .ex -std=c99

我可以做类似 gcc $inputCode -o executable 的事情吗?
此外,如果有人知道我是否可以在不生成任何文件的情况下执行此 c 代码?
谢谢!

你可以做到:echo whatever | gcc -x c -o .ex -但我认为这不值得。

一个可能更干净的替代方案[你没有做 \"\']。请注意,trap 示例可能不完全正确,但可能是您正在努力实现的目标。

cat << EOF | gcc -x c -o .ex -
int
main(void)
{
    return 'a';
}
EOF
trap "rm -f .ex" SIGINT
.ex
rm -f .ex

但是,您仍然必须创建一个输出 ELF 可执行文件文件。部分原因是 OS 需要嵌入式 ELF 加载器(例如 /lib64/ld-linux-x86-64.so.2)来知道如何加载可执行文件。

我已经多次执行 "script creates C executable from source",我只是创建 .c 和可执行文件,然后再执行 rm。我在 perl 中执行此操作,其中 C 文本出现在 __DATA__ 之后,我执行 unlink 函数调用而不是 rm