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

头文件包含问题

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

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

    GCC工具链都包含哪些工具

    GCC GCC原名为GNU C语言编译器(GNU C Compiler),原本只能处理C语言。...后来随着功能的扩展,支持的语言种类越来越多 ,故更名为GCC(GNU Compiler Collection,GNU编译器套件) 因此 GCC既可以指代C编译器,也可以指代GNU编译套件 其套件囊括了许多子工具...: gcc: C 编译器 g++: C++ 编译器 cpp: C 预处理器 as: 汇编器 ld: 连接器 objcopy: 目标文件翻译器,用于从连接器输出中创建一个ROM 映像 objdump: 目标文件阅读器..., 用于反汇编目标文件 make: make 工具 gdb: 源代码调试器 GCC工具链 一个程序从代码编译到机器执行,中间需要经历很多步骤,比如从预编译,编译,到汇编和连接, 这一系列环环相扣过程中涉及到的...GNU工具集,称之为GCC工具链 在windows平台中,我们有许多的图形化IDE可以选择,一般编译工具链都集成进了软件内部,无需开发者关心,但是在Linux平台,基本以命令行的方式进行操作,那么对于开发者来说

    1.6K50

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

    如果所包含头文件非常庞大,则会严重降低编译速度(使用GCC的-E选项可获得并查看最终预处理完的文件)。因此,在源文件中应仅包含必需的头文件,且尽量不要在头文件包含其它头文件。...3)头文件包含哪些头文件仅取决于自身,而非包含头文件的源文件。 例如,编译源文件时需要用到头文件B,且源文件已包含头文件A,而索性将头文件B包含头文件A中,这是错误的做法。...5)头文件应是自完备的,即在任一源文件中包含任一头文件而不会产生编译错误。 6)源文件中包含头文件尽量不要有顺序依赖。 7)尽量在源文件中包含头文件,而非在头文件中。且源文件仅包含所需的头文件。...某些gcc编译器版本(如3.2.3)会报告“warning: #pragma once is obsolete”的警告,而其他较老版本的编译器可能会报错。...但随着gcc 3.4的发布,#pragma once中的一些问题(主要与符号链接和硬链接有关)得以解决,#pragma once命令也标记为“未废弃”。

    5.2K32

    GCC、ARM-LINUX-GCC、ARM-ELF-GCC浅析

    因为不同目标机的指令集是不一样的,比如arm跟x86就不一样】 2. gcc-core:顾明之意是GCC的核心部分,这部分是只包含c的编译器及公共部分,而对其他语言【C++、Ada等】的支持包需要另外安装...【它依赖于Binutils,可以参考安装GCC】 3. Glibc:包含了主要的c库,这个库提供了基本的例程,用于分配内存,搜索目录,读写文件,字符串处理等等。...看到源码中的printf函数没有,这个函数在GCC中是以库函数的形式存在,这个库函数在glibc库中,在stdio.h头文件中被声明。...、arm-linux-gcc: arm-linux-gcc是基于ARM目标机的交叉编译软件,前面几年安装arm-linux-gcc交叉编译软件对与一个初级嵌入式工程师来说特别棘手,因为它需要安装多个软件包...tar.gz这个压缩包包含有ld,ar,as等一些产生或者处理二进制文件的工具。

    6.7K10

    Linux头文件和CC++的头文件

    一、linux常用头文件如下: ------------------------- POSIX标准定义的头文件 目录项 文件控制 <fnmatch.h...字符串类 #include //运行期间类型信息 #include     //STL 通用模板类 #include //对包含值的数组的操作...程序中如下形式的一条控制行语句将会使得该行被文件filename的内容替换掉:   # include   当然,文件名filename中不能包含 > 和换行字符以及 "、'、\、或 /* 字符。...在这种形式中,文件名filename中不能包含换行字符和 "、'、\、或 /* 字符,但允许使用 > 字符。   ...在一般应用程序源代码中,头文件与开发环境中的库文件有着不可分割的紧密联系,库中的每个函数都需要在头文件中加以声明。

    8.5K20

    linuxgcc使用方法_linux怎么用gcc编译

    GCC的初衷是为GNU操作系统专门编写的一款编译器。GNU系统是彻底的自由软件。此处,“自由”的含义是它尊重用户的自由。 02. 命令格式 用法:gcc [选项] 文件… 03....显示命令行选项和多个版本库搜索路径间的映射 -print-multi-os-directory 显示操作系统库的相对路径 -print-sysroot 显示目标库目录 -print-sysroot-headers-suffix 显示用于寻找头文件的...组件的相对路径时不生成规范化的 前缀 -pipe 使用管道代替临时文件 -time 为每个子进程计时 -specs= 用 的内容覆盖内建的 specs 文件 -std= 指定输入源文件遵循的标准 –sysroot= 将 作为头文件和库文件的根目录...4.9 多文件编译方法二 [deng@localhost bak]$ gcc -c test.c [deng@localhost bak]$ gcc -c testfun.c [deng@localhost...bak]$ gcc test.o testfun.o -o test [deng@localhost bak]$ 到此这篇关于Linux gcc命令的具体使用的文章就介绍到这了,更多相关Linux gcc

    6.7K20

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

    下面介绍一种在linux下编程如何更好更快的解决此类问题。 对linux稍微有点了解的同学估计都知道linux下有一个man命令,但是会用的人估计并不多。...9 其他(Linux特定的), 用来存放内核例行程序的文档。 n 新文档, 可能要移到更适合的领域。 o 老文档, 可能会在一段期限内保留。 l 本地文档, 与本特定系统有关的。...比如,我现在用到了read函数,但是我不知道read需要保护什么头文件,read的参数都是什么样子的,我们当然可以上网去查read,那如果使用的linux系统,那就有一个非常快的方法,就是在linux的终端下输入命令...man 2 read 就会出现关于read函数的所有描述,包括所需要的头文件,函数原型,函数返回值等等。...再举一个例子,我们用到了log函数,这个函数不在标准c库中,那我怎么知道他需要链接那个库,需要保护什么头文件呢? 同样的,执行命令 man 3 log 就会出现log的所有信息。

    1.1K70

    C++编程常用头文件及其包含函数汇总

    ldiv() 【转自】http://blog.csdn.net/linhaiyun_ytdx/article/details/48064065  #include  是标准的C++头文件...,任何符合标准的C++开发环境都有这个头文件。 ...当使用时,相当于在C中调用库函数,使用的是全局命名空间,也就是早期的C++实现;当使用的时候,该头文件没有定义全局命名空间,必须使用namespace std...  #include   是C++里面的模板类 “集合”的头文件  set是C++标准库中的一种关联容器。...地区控制 地区设置 setlocale  数字格式约定查询 国家的货币、日期、时间等的格式转换 localeconv  以上是用于原博主编程使用,属于不完整版本,完整版本请见:  C/C++常用头文件及函数汇总

    1.6K00

    Linux gcc使用基础

    gcc 编译器是 Linux 下默认的 C/C++ 编译器,大部分 Linux 发行版中都是默认安装的。gcc 编译器通常以 Linux 命令的形式在终端(Shell/Bash)中使用。... int main(void) { float value; value = sin(3.14/2);// 即pai/2 = 90° } 函数中用到了sin三角函数,包含了...后面的-L参数用于指定库的搜索路径,由于Linux的默认库的位置就是在lib文件目录下,因此可以省略不写,如果是其它的第三方库,则需要指明库文件的位置。...另外,对于第三方的头文件,也许指明头文件的路径,比如stdio.h这个文件,如果它不是系统认识的文件,则在编译时需要通过-I参数知名位置: gcc sintest.c -lm -I/usr/include...参考:《鸟哥的Linux私房菜 (基础学习篇 第三版)》

    3.2K10

    linux命令行安装gcc_linux用yum安装gcc

    下面由学习啦小编为大家整理了linux下安装gcc命令的方法,希望大家喜欢! linux下安装gcc命令 1 下载 在GCC网站上或者通过网上搜索可以查找到下载资源。...其它设置 GCC 4.1.2的所有文件,包括命令文件(如gcc、g++)、库文件等都在${destdir}目录下分别存放,如命令文件放在bin目录下、库文件在 lib下、头文件在include下等。...由于命令文件和库文件所在的目录还没有包含在相应的搜索路径内,所以必须要作适当的设置之后编译器才能顺利地找到并使用它们。...完成了Linux安装GCC,之后你就能轻松地编辑了。.../local/gcc-4.0.1 [root@linux gcc-4.0.1]# make (在目标目录下执行编译) 6、安装gcc: [root@linux gcc-4.0.1]# pwd /usr/

    25.9K31

    Linux编译工具:gcc入门

    预处理实际上是将头文件、宏进行展开。编译阶段,gcc调用不同语言的编译器,例如c语言调用编译器ccl。gcc实际上是个工具链,在编译程序的过程中调用不同的工具。汇编阶段,gcc调用汇编器进行汇编。....s -c 通知gcc取消连接步骤,即编译源码,并在最后生成目标文件 -Wall 使gcc对源文件的代码有问题的地方发出警告 -Idir 将dir目录加入搜索头文件的目录路径 -Ldir 将dir目录加入搜索库的目录路径...include #include"hello.h" int main() { printHello(); return 0; } //hello.h //仅包含函数声明...运行时也是比较占内存的,因为每个程序都包含了一份静态库。 动态库(.so或.sa):程序在运行的时候才去链接共享库的代码,多个程序共享使用库的代码,这样就减少了程序的体积。...同样的,-I.选项用于头文件的搜索。 8. 生成共享库 生成一个共享库,名称的规则是libxxx.so。

    4.7K50

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

    不过这里最先包含的是首选的头文件,即例如a.cpp文件中应该优先包含a.h。首选的头文件是为了减少隐藏依赖,同时确保头文件和实现文件是匹配的。...具体的例子是:假如你有一个cc文件(linux平台的cpp文件后缀为cc)是google-awesome-project/src/foo/internal/fooserver.cc,那么它所包含头文件的顺序如下...如果先包含A.h就可以发现隐藏依赖,所以各种规范都要求自身的头文件放在第一个,就能发现隐藏依赖。解决办法就是在A.h中包含B.h,而不是在A.c中再包含。...(2)在包含头文件时应该加上头文件所在工程的文件夹名,即假如你有这样一个工程base,里面有一个logging.h,那么外部包含这个头文件应该这样写:#include "base/logging.h",...比如上面例子sys/types.h不能归入C标准库,而是Linux操作系统提供的SDK。

    2.6K10
    领券