如何使用Linux终端(如python,在gcc或g ++中编译一行C ++代码?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Linux终端(如python,在gcc或g ++中编译一行C ++代码?相关的知识,希望对你有一定的参考价值。

一个可以在终端中运行python命令

示例:

>>> 2 + 3

5

>>>

一个人可以在不将其写入文本文件的情况下编译一行代码吗?

答案

并不是真的像在Python中那样,但是在类似Unix的系统上,您可以使用这里文档在终端中键入文本并将其通过管道传输到gcc和像这样运行输出a.out

(
cat <<EOF
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
puts("Hello World");

return EXIT_SUCCESS;
}
EOF
 ) | gcc -xc - && ./a.out

输入前两行后:

(
cat <<EOF

开始输入程序源代码并输入

EOF
 ) | gcc -xc - && ./a.out

编译并运行程序。

另一答案

Python不会编译一行代码。它解释一行代码并更新其自身的状态,以便下一行代码知道上一行的结果。

 >>> x = 2 + 3
 >>> x + 4
 9

这称为REPL

对于C语言来说,这是不可能的。人们可以编造一种工具来读取和执行单行C程序,但是每一行都是一个完整的程序,完全不知道其他任何一行。这一点都不有趣。

另一答案

CERN开发了一个C ++解释器,可以完全(很好,不完全,但非常接近)完成python解释器的工作。您可以在its website中找到更多信息。

它在内部大量使用Clang,因此,如果从源代码构建它,则将需要LLVM / Clang。

另一答案

这里是无错误的单行编译:-

$ echo "int foo() { return 42; }" | gcc -xc -fsyntax-only -c -

这是一个有问题的人:

$ echo "void foo() { return 42; }" | gcc -xc -fsyntax-only -c -
<stdin>: In function ‘foo’:
<stdin>:1:21: warning: ‘return’ with a value, in function returning void
<stdin>:1:6: note: declared here

[-fsyntax-only指示gcc仅解析您的语法,不生成目标文件,我想这是您的后继。

以上是关于如何使用Linux终端(如python,在gcc或g ++中编译一行C ++代码?的主要内容,如果未能解决你的问题,请参考以下文章

如何在linux上编译c工程文件

Linux系统中终端的入口

linux终端下如何进行C语言编译

linux中如何用gcc编译用vi写的c文件

如何在linux系统中安装python?

如何安装arm-linux-gcc