gpt4 book ai didi

c++ - 在c++中链接多个目标文件但没有输出

转载 作者:搜寻专家 更新时间:2023-10-31 01:53:26 24 4
gpt4 key购买 nike

我是 C++ 编程的新手,了解 C++ 的基础知识。我正在尝试链接三个文件,但我无法获得输出。我正在学习 c++ cookbook 这本书

假设我们有文件 a.hpp a.cpp, b.hpp b.cpp,c.hpp c.cpp,代码如下:

a.hpp

#ifndef A_HPP_INCLUDED
#define A_HPP_INCLUDED
void a();
#endif

a.cpp

#include "a.hpp"
#include <iostream>
void a()
{
std::cout<<"a \n ";
}

b.hpp

#ifndef B_HPP_INCLUDED
#define B_HPP_INCLUDED
void b();
#endif

b.cpp

#include "b.hpp"
#include <iostream>
void b()
{
std::cout<<"b \n ";
}

c.hpp

#ifndef C_HPP_INCLUDED
#define C_HPP_INCLUDED
void c();
#endif

c.cpp

#include "a.hpp"
#include "b.hpp"
#include "c.hpp"
void c()
{
a();
b();

}

int main()
{
c();
return 0;
}

我已经在一个文件夹中创建了所有文件,我用来编译和链接它们的命令是

$:g++ -c -Wall a.cpp b.cpp c.cpp
$:g++ -o -Wall a.o b.o c.o
$:./a.out

我在等结果

a
b

但是没有任何输出,请大家帮我解决这个问题。

最佳答案

g++ 命令行中删除 -o

您目前正在告诉 g++ 将您的对象链接到一个名为 -Wall 的文件中。因此替代解决方案是调用 ./-Wall 而不是 ./a.out

由于字符串中的空格("\n ""\n"),您仍然无法获得准确的预期输出。你也可能想要替换:

std::cout << "something \n";

std::cout << "something" << std::endl;

如果您想立即在屏幕上显示数据(刷新)。另见 C++: “std::endl” vs “\n” .

关于c++ - 在c++中链接多个目标文件但没有输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11158491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com