一个奇怪的案例...对"主要"的未定义引用
A curious case of... undefined reference to `main'
在Facebook上,有一个简单的挑战 - 用你的语言写"我是一名程序员"。
当然,我可以这样做
print("I am a programmer")
这很无聊。无论如何,我需要进行心理健康检查。
因此,我编写了一个 Python3 脚本,该脚本编写了一个C++文件,尝试编译它,获取C++程序的输出,并显示"我是程序员"。
from os import system
from subprocess import getoutput
from subprocess import call
def main(string):
# removes the old version, if it exists
system("rm -rf program.cpp")
# creates the file
f = open("program.cpp", "a")
output = "#include <iostream>n"
f.write(output)
output = "using namespace std;n"
f.write(output)
output = "int main()n{n"
f.write(output)
output = """tcout << "I am a programmer" << endl;n"""
f.write(output)
output = "return 0;n"
f.write(output)
output = "}n"
f.write(output)
# COMPILE!
call("g++ program.cpp", shell=True)
# call the program, get its output...
out = getoutput("./a.out")
# print the output
print(out)
main("I am a programmer")
。那么我无法编译:
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
program.cpp
包含int main()
,所以这不可能是问题。
当我在命令行上g++ program.cpp
时 - 而不是从 Python 脚本 - 它会编译。没关系。这很令人沮丧。
编辑:生成的.cpp文件的内容:
#include <iostream>
using namespace std;
int main()
{
cout << "I am a programmer" << endl;
return 0;
}
案例已结案:在我的 Python 程序中,缺少f.close()
。缓冲区未写入program.cpp
。
感谢您的帮助!
相关文章:
- 从C++dll访问C#中的一行主要参数
- '||'之前的预期主要表达
- Usaco第1.6节主要回文
- C 和 C++ 中开关语句的案例标签的常量值,但显示不同的行为
- 为什么这个案例陈述需要一个"if else"而不仅仅是一个"if"?
- C++ strcpy 函数在少数主要情况下失败
- 向量是否存在行主要形式?
- "]"标记之前的预期主要表达式(平分搜索)
- C++ switch 语句:对案例进行分组,并针对每个案例给出特定的说明
- 任意大小的 constexpr 数组是否可以用作 switch 语句中的案例?
- 了解 Linux 虚拟内存:valgrind 的 massif 输出显示了有和没有 --pages-as-heap 的主要差异
- 将类作为主要参数的语法在哪里需要?
- Python & C-C++ 扩展模块案例段故障
- 当只有一个线程主要使用该对象而其他线程很少使用它时,如何最小化该对象的互斥锁锁定?
- 与 SDL2(以及类似案例)一起构建SDL2_image
- 当我链接两个静态C++库时,我可以在两个主函数库中有两个主要功能吗?
- 如何使用 cmake pack redhat 风格的 rpm,这是主要的和"-devel"?
- 在制作中未定义对"主要"的引用
- 自定义分配器,包括放置新案例
- 一个奇怪的案例...对"主要"的未定义引用