我正在尝试创建一个可以包含的头文件,例如
#include“sort.h”
并且包含该头文件的程序可以正常编译
g++ main.cpp
无需将 header 中函数的每个目标文件与 main 链接起来。
g++ -c main.cpp insertion_sort.cpp merge_sort.cpp
g++ main.o merge_sort.o insertion_sort.o
那么我是否必须链接 header 中每个函数的每个目标文件。还是他们的另一种方式?
头文件:
//sort.h file
#ifndef sort_h
#define sort_h
void insertion_sort(int *a,int n);
void merge_sort(int *a,int n);
//I want to include more functions
#endif
如何像 cmath 或 stdlib.h 这样的普通 header 一样使用我的 header ?
最佳答案
您似乎认为从标准库 header 获得的内容没有需要链接的相应目标文件/库文件。这是错误的。
标准库已链接到您的应用程序,只是编译器会自动为您完成此操作。您不必手动告诉它这样做。
您的应用程序还需要可用的标准库才能运行。这就是为什么您必须在要运行使用 Visual Studio 构建的程序的计算机上安装 Microsoft 可再发行组件。其他编译器有类似的要求,您需要将其运行时库与您的应用程序一起分发。
简而言之;标准库与其他库没有什么不同,只是编译器在幕后为您链接它。
关于c++ - 如何创建像标准库头一样的头,以便可以在不链接头中函数的所有目标文件的情况下编译程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50267236/