c++ - 如何创建像标准库头一样的头,以便可以在不链接头中函数的所有目标文件的情况下编译程序?

标签 c++ header-files

我正在尝试创建一个可以包含的头文件,例如 #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/

相关文章:

c++ - std::random_shuffle 是否可以跨不同的编译器重现?

c++ - 请求从 'std::string' 到非标量类型的转换

android - 如何在cocos2d-x中绘制圆形填充颜色?

c++ - 如何返回首字母大写的单词

ios - Xcode 中多个目标的类和 header

c++ - 错误 : reference to ‘sword’ is ambiguous in armadillo and oracle occi compatibility issue

c++ - 为什么将 1 个头文件包含到两个 CPP 文件中不会导致重新定义错误?

c++ - 不能在多个文件中包含动态库头文件?

python - cython char array[] convert 中的 c++ header wrapper 声明