【问题标题】:How to compile a single line of C++ code in gcc or g++ using Linux terminal like python?如何使用 Python 等 Linux 终端在 gcc 或 g++ 中编译单行 C++ 代码?
【发布时间】:2018-12-13 14:13:04
【问题描述】:

可以在终端运行python命令

示例:

>>> 2 + 3

5

>>>

可以编译一行代码而不将其写入文本文件吗?

【问题讨论】:

    标签: gcc gnome-terminal


    【解决方案1】:

    不像在 Python 中,但在类 Unix 系统上你可以使用 here-documents 在终端中键入文本并将其通过管道传输到 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
    

    编译并运行程序。

    【讨论】:

      【解决方案2】:

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

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

      这叫REPL

      C 不可能有这样的事情。人们可以编写一个工具来读取和执行一行 C 程序,但是每一行都是一个完整的程序,完全不知道任何其他行。这一点都不有趣。

      【讨论】:

        【解决方案3】:

        CERN 开发了一个 C++ 解释器,它完全(嗯,不完全,但非常接近)python 解释器所做的事情。你可以在its website找到更多信息。

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

        【讨论】:

        【解决方案4】:

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

        $ 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 仅解析您的语法,不生成任何目标文件,我猜这就是您所追求的。

        【讨论】:

          猜你喜欢
          • 2015-01-09
          • 1970-01-01
          • 2020-07-15
          • 1970-01-01
          • 2011-01-03
          • 2015-02-08
          • 2014-01-08
          相关资源
          最近更新 更多