单独的标头文件及其逻辑在C 中
Separate header file and its logic in c++
请让我了解标头文件在C 中的工作方式。我正在使用OSX和G 编译器。我有
main.cpp
#include<iostream>
#include "myfunc.hpp"
using namespace std;
int main() {
square(10);
return 0;
}
myfunc.hpp
#ifndef MYFUNC_HPP_
#define MYFUNC_HPP_
/*
void square(int x) {
std::cout << x * x << std::endl;
};
*/
void square(int);
#endif // MYFUNC_HPP_
myfunc.cpp
#include<iostream>
#include "myfunc.hpp"
using namespace std;
void square(int x) {
cout << x * x << endl;
}
现在,当我尝试使用 g main.cpp 进行编译时,它的给予
架构的未定义符号x86_64: "正方形(int(",从: _ main-088331.o中的曼 LD:符号(s(架构x86_64找不到符号 clang:错误:链接器命令因出口代码1失败(使用-V查看调用(
因为它找不到在myfunc.cpp中定义的 square 的函数定义。但是,如果我在标题文件中定义了Square函数,则可以使用它,因为现在它找到了函数定义。
我想使用main.cpp中的myfunc.cpp中定义的函数,因此我使用的是标题文件myfunc.hpp。我该如何实现?我在这里做错了吗?也许我的概念对标题并不清楚,因为我是C 编程的新手。
调用g++ main.cpp
时,编译器将尝试编译和链接 ,但对于链接,它缺少包含包含定义定义的源或对象文件square
。因此,它可以基于标题文件中给出的函数原型来编译main.cpp
,但不能链接。
仅编译main.cpp
写
g++ -c main.cpp
编译并链接完整的程序写:
g++ main.cpp myfunc.cpp
有关包含多个翻译单元的程序的更多详细信息,例如,此链接。
相关文章:
- 用C++在单独的头文件中完成函数体
- 如何使用单独文件中的派生类访问友元函数对象
- avrogencpp能为模式中的每种类型生成单独的头文件吗
- 如何将 2 个类分成单独的 .h 文件并正确设置它们
- C++ 链接到单独的.cpp文件说"multiple definitions"
- 从单独的文件中读取树
- 当结构位于单独的头文件中时'unregistered datatype'在 QML 中出现Q_GADGET错误
- 使用 Premake5 构建库,每个构建没有单独的项目文件
- 为什么要将函数声明和定义放在单独的文件中
- 使用 #include 将大量重复代码放入单独的文件中是否可以和/或正常?
- 创建单独的实现文件和头文件
- 在C++中对文件中的值单独执行计算
- 使用 ctest 的每个测试都需要单独的文件吗?
- 好友成员函数可以在单独的文件中使用吗?
- 运行单独的 cpp 文件,每个文件都有 main()
- 在 h 和 cpp 文件中单独声明和实现模板有时有效,有时会出现链接器错误
- 单独的类声明和方法定义文件问题
- 如何在C 中的Little Endian中读取来自二进制文件的单独的十六进制字符
- Howo 使用 cl 预处理为 masm 组装生成一个单独的文件
- 单独文件中各种 c++ 类的标头出现问题