c – 为什么我们需要在编译期间包含C或CPP声明文件而不是像iostr
发布时间:2020-12-16 10:06:06 所属栏目:百科 来源:网络整理
导读:如果需要使用我们自己的带有声明的头文件和带有定义的cpp文件来编译C或CPP程序,我们需要在编译命令中包含带有定义的cpp文件(参见 this answer).但是,当我们编写#include iostream时,我们不会在编译语句中包含iostream.cpp,如g main.cpp iostream.cpp -o main
如果需要使用我们自己的带有声明的头文件和带有定义的cpp文件来编译C或CPP程序,我们需要在编译命令中包含带有定义的cpp文件(参见
this answer).但是,当我们编写#include< iostream>时,我们不会在编译语句中包含iostream.cpp,如g main.cpp iostream.cpp -o main.
如果我们编写自定义声明文件,例如带有类声明的hello.hpp和带有定义的hello.cpp,我们需要在包含hello.hpp之后使用g main.cpp hello.cpp -o main编译它. main.cpp文件.为什么是这样? 编辑:我们可以模仿我们的自定义头文件和cpp文件的标准模板库的行为,这样我们所要做的就是包含头文件并自动编译声明吗?如果是,那怎么样?如果不是,为什么不呢? 解决方法
标准库正在隐式链接.所以
g++ main.cpp -o main 是真的 g++ main.cpp -o main -lstdc++ -lc 其中libstdc是c标准库,libc是c标准库.其他库需要明确链接(例如libm). 如果您将编译和链接步骤分开,这将变得更加清晰: g++ -c main.cpp -o main.o g++ -c other.cpp -o other.o g++ main.o other.o /usr/lib/libstdc++.a /usr/lib/libc.a -o main 这里我们将main()函数定义和其他定义(other.cpp)编译成目标文件,并将它们与标准库中现有的编译函数/类/变量定义相结合. 请参阅Shared Library Creation和的TLDP页面 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |