首页 > 解决方案 > c ++包含标头失败

问题描述

最近我开始学习c++。当我尝试编写头文件时,出现包含错误。这是我的代码:首先是头文件(header.h)

#pragma once
void print(int);

然后是它的cpp文件(header.cpp)

#include "header.h"
#include <iostream>
using namespace std;

void print(int x){
    cout << x << endl;
}

最后是我的主要 cpp 程序(main.cpp)

#include <iostream>
#include "./header.h"
using namespace std;

int main(){
    int x = 123;
    print(x);
}

这是错误,我无法弄清楚它在说什么orz

cd "/Users/yianchen/Desktop/cpp practice/" && g++ main.cpp -o main && "/Users/yianchen/Desktop/cpp practice/"main Undefined symbols for architecture x86_64: "print(int)", 引用自: main-90c620.o 中的 _main ld: 未找到架构 x86_64 的符号 clang: 错误: 链接器命令失败,退出代码为 1(使用 -v 查看调用)

当我使用时,我已经搜索了一些解决方案

#include "header.cpp"

它工作正常,但我看到不推荐使用#include some_file.cpp 的人

顺便说一句,我使用 Visual Studio 代码并使用代码运行器。谢谢!

标签: c++header-files

解决方案


正常用法是compile header.cpp,而不是将其包含在另一个.cpp源中。然后链接器会将这些部分放在一起。


推荐阅读