运行C或C++文件作为脚本

10 浏览
0 Comments

运行C或C++文件作为脚本

有没有办法将C或C++文件作为脚本运行?我尝试了以下代码:

#!/usr/bin/gcc main.c -o main; ./main
int main(){ return 0; }

但出现以下错误信息:

./main.c:1:2: error: invalid preprocessing directive #!

0
0 Comments

在上述内容中,我们看到了一个名为"main.c"的C文件以及一个名为"runc"的Bash脚本。问题是如何将C文件作为脚本运行,并解决这个问题的方法。

首先,让我们看一下"runc"脚本的内容:

#!/bin/bash
sed -n '2,$p' "$@" | gcc -o /tmp/a.out -x c++ - && /tmp/a.out
rm -f /tmp/a.out

这个脚本使用sed命令将传入的C文件去掉了第一行的hash-bang行(即#!/bin/bash),然后将剩余的内容通过管道传递给gcc进行编译。传递"-x c++"参数是因为使用了"-"读取stdin,而gcc需要指定编译的源语言。

在"main.c"文件中,我们看到了以下内容:

#!/bin/bash /usr/local/bin/runc
#include 
int main() {
    printf("hello world!\n");
    return 0;
}

这个文件的第一行是"#!/bin/bash /usr/local/bin/runc",这告诉系统要使用哪个程序来运行这个脚本。没有这一行,bash将尝试将".c"文件解释为一个bash脚本,并因语法错误而退出。

为了解决这个问题,我们可以使用mktemp代替"a.out",这样可以避免在同时运行两个不同的C脚本时出现问题。另外,由于顶部的hashbang,这个C脚本无法编译为真正的C程序,虽然不确定该如何解决这个问题。

以上内容展示了如何将C文件作为脚本运行,并提供了解决方法。通过在C文件中添加"#!/bin/bash /usr/local/bin/runc"作为第一行,我们能够让系统知道要使用哪个程序来运行这个脚本。然后,使用"runc"脚本将C文件传递给gcc进行编译和执行。通过这种方式,我们可以像运行shell脚本一样运行C文件。

以上就是关于"Run C or C++ file as a script"问题的原因和解决方法的整理。

0
0 Comments

问题:如何将C或C++文件作为脚本运行?

原因:tcc是一个小型的C编译器,可以用来运行C代码作为脚本。添加#!/usr/bin/tcc -run即可实现。

解决方法:使用tcc作为C或C++文件的编译器,并在文件开头添加#!/usr/bin/tcc -run。这样就可以将C或C++文件作为脚本运行。需要注意的是,tcc编译器可能存在一些编译器错误,需要注意避免。

0