首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

头文件包含问题

/blog.csdn.net/humanking7/article/details/79299045 ---- 先占个坑-后补 以前自己搭建起来的一个稍微大一点的项目,就会发现一些当初架构起来的问题,头文件包含乱用...,导致后期分外蛋疼,我遇到大致两种问题: 头文件全部包含,使得预编译会剔除某个头文件,导致结果:编译单个源文件没有问题,整体进行链接时,会发现找不到剔除的头文件定义的类或者变量; 接着,就把这个头文件的...#include"BB.h"写到#ifndef _AA_H_ /#define _AA_H_前面,这样到会导致下一个问题,头文件嵌套深度太深。...解决方法:头文件中#include的头文件尽量的少,不能太互相交融(这需要开始定义框架时,想清楚变量之间的关系和信息传递的方式),尽量把#include头文件写到源文件(cpp文件中)。

1.8K10
您找到你想要的搜索结果了吗?
是的
没有找到

conan入门(二十):封装只包含头文件(header_only)的示例

conan: 封装只包含头文件(header_only)的示例 有的C/C++项目只包含头文件,不需要编译,对于这种情况如何封装为Conan的包呢?...Conan官方文档 《Package scaffolding for conan new command》给出了样例 我就有这样一个项目 common_source_cpp收集了工作中常用的代码,以C/C++头文件形式为主...,本文就以common_source_cpp为例说明如何实现conanfile.py将它封装为一个不需要编译只有头文件的Conan包。...include") self.copy("LICENSE", dst="include") def package_id(self): # 重要:指定项目只有头文件.../master -r ${repo} # ${repo}为私有制品的名字 注意:因为我们需要common_source_cpp/master保持与远程端同步的最新代码,所以这里没有使用–all

58250

C语言头文件组织与包含原则

通过头文件包含的方法将程序中的各功能模块联系起来有利于模块化程序设计: 1)通过头文件调用功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制即可。..."本模块其他头文件" #include "自定义工具头文件" #include "第三方头文件" #include "平台相关头文件" #include "C++头文件" #include "C头文件...同时,源文件同名头文件置于包含列表前端便于检查该头文件是否自完备,以及类型或函数声明是否与标准冲突。 2)减少头文件的嵌套和交叉引用,头文件包含其真正需要显式包含头文件。...* 为简化头文件包含且不失可移植性,本文件内可包含少量C通用头文件。 * 因本文件内定义基本数据类型别名,故.c文件中应将本头文件置于包含列表顶端, * 否则编译时可能产生类型未定义错误。....> 注意,示例头文件包含C文件虽能简化包含,但却与规则1冲突。也可另外增加包含文件列表的通用头文件

5K32

【答疑解惑】如何知道要包含哪个头文件

下面介绍一种在linux下编程如何更好更快的解决此类问题。 对linux稍微有点了解的同学估计都知道linux下有一个man命令,但是会用的人估计并不多。...3 例程, 即库函数,比如标准Clibc。 4 设备, 即/dev目录下的特殊文件。 5 文件格式描述, 例如/etc/passwd。 6 游戏, 不用解释啦! 7 杂项, 例如宏命令包、惯例等。...比如,我现在用到了read函数,但是我不知道read需要保护什么头文件,read的参数都是什么样子的,我们当然可以上网去查read,那如果使用的linux系统,那就有一个非常快的方法,就是在linux的终端下输入命令...man 2 read 就会出现关于read函数的所有描述,包括所需要的头文件,函数原型,函数返回值等等。...再举一个例子,我们用到了log函数,这个函数不在标准c中,那我怎么知道他需要链接那个,需要保护什么头文件呢? 同样的,执行命令 man 3 log 就会出现log的所有信息。

1.1K70

linux 动态 静态_静态库里面包含动态

一个与动态链接的可执行文件仅仅包含它用到的函数入口地址的一个表(头文件),而不是外部函数所在目标文件(.o)的整个机器码 在可执行文件开始运行以前,外部函数的机器码由操作系统从磁盘上的该动态中复制到内存中.../lib # 将静态复制到lib目录下 既然已经打包好了静态,让我们包一下头文件来调用我们实现的接口: #include #include "add.h" #include "...其实gcc编译时去链接头文件是去默认路径以及当前路径寻找,而我们将静态打包到lib目录下,gcc编译时就找不到我们的了,所以我们需要加一些选项来告知gcc去寻找指定路径的头文件。.../lib -lmycal -static 其中: -I(i的大写) + 指定路径:是指告知gcc除了默认路径,还要去寻找一下指定的路径的头文件。 -L + 指定路径:指定所在的路径。...当然这个方法也不推荐,毕竟可能污染头文件

7.3K20

google C++编程风格指南之头文件包含顺序

google C++编程风格对头文件包含顺序作出如下指示: (1)为了加强可读性和避免隐含依赖,应使用下面的顺序:C标准、C++标准、其它头文件、你自己工程的头文件。...具体的例子是:假如你有一个cc文件(linux平台的cpp文件后缀为cc)是google-awesome-project/src/foo/internal/fooserver.cc,那么它所包含头文件的顺序如下...不过我觉得《Google C++ 编程风格指南》的顺序:C标准、C++标准、其它头文件、自己工程的头文件,在最前面漏了一项:操作系统级别的头文件。...比如上面例子sys/types.h不能归入C标准,而是Linux操作系统提供的SDK。...因此我觉得更准确的说法应该是:OS SDK .h , C标准、C++标准、其它头文件、你自己工程的头文件

2.4K10

教程:为Linux系统导出内核头文件

最近由于项目需要,要编译mlibc,其中需要linux kernel headers,而使用apt安装的头文件总是有问题,因此,自己从内核里面导出了一份。在此写个简单的文章记录一下。...下载内核的源代码 然后,去中科大的软件镜像站下载Linux内核源代码: https://mirrors.ustc.edu.cn/kernel.org/linux/kernel/v5.x/ 在页面里面找到...linux 5.15的代码包,下载: wget https://mirrors.ustc.edu.cn/kernel.org/linux/kernel/v5.x/linux-5.15.tar.xz 导出头文件...输入以下命令,即可导出内核头文件到build/目录下。其中,ARCH表示要导出的架构,按照自己的需要来输入。.../build 然后我们就能在build目录下看到导出好的内核头文件了。

47530

C++:无法解析的外部符号问题 与 头文件包含注意要点

[4]没有在c++包含目录和目录加入相应的类包路径 [5]在测试工程中被测文件目录可能需要包含被测类的cpp定义文件 [6]ICE接口测试时,无法解析可能因为被测文件没有包含进相关的cpp文件...实际中编码设计过程中,最基本的一个原则就是在类的头文件中最好不要包含其他头文件,因为这样会使类之间的文件包含关系变得复杂化。...这样,在 该类的声明头文件中就可以没有其他头文件。如果实现中用到了其他的类,那么可以只在该类的实现文件中包含用到的类或者函数头文件就行。...当类声明中引用的是其他类的实例时,上述原则变不能保持,只 有在该类的声明头文件中引用所引用的类或者函数头文件。...#include "自己写的工具头文件" #include "第三方头文件" #include "平台相关头文件" #include "C++头文件" #include "C头文件" 小记:这篇博文是我的第一篇博文

3.7K21

VS2019头文件的使用

VS2019 头文件,使用教程 一丶简介 使用VS系列的时候,下载了一个,以及很多文件 此时想要包含头文件就很头疼,以及包含....一直使用替换头文件,以及 #pragma comment(lib,"")的方式 其实Vs已经给我们提供了方法,只是不会用而已.这里当作记录贴进行记录一下....,使用#include所包含头文件的目录 也就是头文件的目录 主要就是提供一个目录,这样源码中当使用#include就可以找到了.如果是你自己写的.h那么你就使用#include"xx.h...C++ 连接器中的目录介绍 C++->附加包含目录 INCLUDE 跟上方所述VC++->包含目录一样也是印象InClude路径的 连接器->附加目录 LIBPATH 指明LIB所在的目录,指明之后则可以在附加依赖项中直接填写你想使用的...#include //我们的包含目录或者附加包含目录包含的是aaa目录 #pragma comment(lib,"ccc.lib") //我们的连接器->附加目录指明了CCC.

1.6K60
领券