我是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
但根本没有输出。请大家帮忙解决这个问题。
答案 0 :(得分:3)
从-o
命令行中删除g++
。
您目前正在告诉g++
将您的对象链接到一个名为-Wall
的文件。因此,替代解决方案是拨打./-Wall
而不是./a.out
。
由于字符串中的空格(" \n "
与"\n"
),您仍然无法获得准确的预期输出。您也可能想要替换:
std::cout << "something \n";
与
std::cout << "something" << std::endl;
如果您想立即在屏幕上显示数据(刷新)。另请参阅C++: “std::endl” vs “\n”。
答案 1 :(得分:0)
$:g++ a.o b.o c.o -o your_output_program_name -Wall
尝试使用此命令。你肯定会让所有事情都正常工作