Mat在python3中的评论使用
input
论证
subprocess.run
这使用了一个事实,即g++在传递文件名时接受来自标准输入的代码
-
. 由于没有文件名后缀,编译器无法猜测语言,因此应使用
-x
.
这个
encoding
添加参数是为了使输入参数接受字符串,否则它需要一个类似字节的对象。
#!/usr/bin/python3
import subprocess
import locale
def compile_cpp(cpp_code_as_string, exe_name):
command = ('g++', '-xc++', '-', '-o', exe_name)
subprocess.run(command, input=cpp_code_as_string, encoding=locale.getpreferredencoding())
hello = '''
#include <iostream>
int main() {
std::cout << "Hello World!\\n";
return 0;
}
'''
compile_cpp(hello, 'hello')
subprocess.run(['./hello'])