在C ++中一起编译源文件和头文件时出错

Nak*_*kib 5 c++ compiler-errors header header-files

这不是我正在处理的实际代码,而是我为了解自己在做什么而编写的示例代码。所以我有三个文件main.cppfavourite.cppfavourite.h。我正在尝试编译main.cpp,但出现一些奇怪的错误。

// main.cpp文件

#include <iostream>
#include "favourite.h"

using namespace std;

int main()
{
    favNum(12);

}
Run Code Online (Sandbox Code Playgroud)

// favourite.cpp文件

#include "favourite.h"
#include <iostream>

using namespace std;

void favNum(int num)
{
    cout << "My Favourate number is " << num << endl;
}
Run Code Online (Sandbox Code Playgroud)

// favourite.h文件

#ifndef FAVOURITE_H
#define FAVOURITE_H

void favNum(int num);

#endif
Run Code Online (Sandbox Code Playgroud)

所有这些文件都在同一个文件夹中,我通常像g ++ main.cpp一样编译它。我不确定我是否需要像使用自定义头文件一样进行不同的编译。

Dan*_*rey 5

如果您说g++ main.cpp这是您的整个命令行,那么该错误是它找不到的链接器错误favNum,对吗?在这种情况下,请尝试:

g++ main.cpp favourite.cpp
Run Code Online (Sandbox Code Playgroud)

或拆分编译和链接:

g++ -c main.cpp -o main.o
g++ -c favourite.cpp -o favourite.o
g++ main.o favourite.o
Run Code Online (Sandbox Code Playgroud)

其中-c意味着:仅编译,无需链接,并且-ofilename是必需的,因为您要将输出写入两个不同的目标文件以将它们与最后一个命令链接。

您可能还添加了其他标志,最重要的是:

-Wall -Wextra -O3
Run Code Online (Sandbox Code Playgroud)