摘于:http://bbs.csdn.net/topics/120024677 (1)在makefile的依赖关系中用不用体现.h头文件?(2)如果在依赖关系中要体现.h头文件,应该体现到什么层次?==============================(1)在makefile的依赖关系中用不用体现.h头文件?============================== 下面是我的一些认识: 头文件中定义的是接口(函数接口,文件外全局变量和宏定义),它的作用是向调用文件封装函数的实现过程.在…
现在我们的Makefile写成这样: all: main main: main.o stack.o maze.ogcc $^ -o $@ main.o: main.h stack.h maze.hstack.o: stack.h main.hmaze.o: maze.h main.h clean:-rm main *.o .PHONY: clean按照惯例,用all做缺省目标.现在还有一点比较麻烦,在写main.o.stack.o和maze.o这三个目标的规则时要查看源代码,找出它们依赖于哪些头…
目标 即我们最终要生成的文件,make默认生成第一个目标,注意 makefile中tab和空格不是一回事,规则使用tab缩进,编辑器不要设置诸如"将tab替换为空格之类的选项",目标的结构如下 目标:依赖1 依赖2 <TAB>生成目标的规则 伪目标 无论如何也要执行的目标,需要使用.PHONY:标识 .PHONY:clean clean: rm -f *.o 常见伪目标 all 是所有目标的伪目标,功能是编译所有目标 clean 删除所有被make创建的文件 install…
转自:http://xiangyanglai.blog.163.com/blog/static/2047252022012715103338279/ 关于两者以前的关系,要从N年以前说起了~ long long ago,once aupon a time ....... 那是一个被 遗忘的年代,在编译器只认识.c(.cpp))文件,而不知道.h是何物的年代. 那时的人们写了很多的.c(.cpp)文件,渐渐地,人们发现在 很多.c(.cpp)文件中的声明语句就是相同的,但他们却不得不一个字一个字地…
一.C++ 编译模式 通常,在一个 C++ 程序中,只包含两类文件―― .cpp 文件和 .h 文件.其中,.cpp 文件被称作 C++ 源文件,里面放的都是 C++ 的源代码:而 .h 文件则被称作 C++ 头文件,里面放的也是 C++ 的源代码. C++ 语言支持"分别编译"(separatecompilation).也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的 .cpp 文件里..cpp 文件里的东西都是相对独立的,在编译(compile)时不需要与其他文件互通…
现在我们再对complicated项目做一些更改,增加程序文件间依赖关系的复杂度. /× main.c ×/ #include"foo.h" int main(void) { foo(); ; } /* foo.c */ #include<stdio.h> #include"foo.h" void foo(void) { printf("%s,This is foo()!\n",HELLO); } /* foo.h */ #ifnde…
最近在看多文件编程的时候遇到的一个问题,本来以为理解了声明和定义的区别(然而并没有····),也算是重新认识了一次声明和定义,下面上代码 情形一:在源文件(.c)中 相信大部分读者对声明和定义的理解是:有分配空间的叫定义,没分配空间的叫声明 定义:表示创建变量或分配存储单元 声明:说明变量的性质,但并不分配存储单元 int a;//定义 extern int a;//声明 第一个int a是定义,分配了存储空间(其实包括了声明和定义两个步骤,可以叫"定义性声明"(defining de…
转自:http://blog.csdn.net/hazir/article/details/38600419 今天下午遇到一个头文件相互包含而导致的编译问题,花了我不少时间去调试没找到问题,最后晚上跟师兄讨论不少时间,突然有所顿悟! 问题重现 我把问题脱离于项目简单描述一下:我写了一个函数 bool func(ClassA* CA) 需要加到项目中,我就把这个函数的声明放到 head1.h 中,函数参数类型 ClassA 定义在另一个头文件 head2.h 中,因此我需要在 head1.h 中包…
在较新版的Visual Studio中,新生成的C++项目文件的的头文件夹下会默认有头文件stdafx.h,而源文件夹下则默认有源文件stdafx.cpp,手动将这些文件删除后,编译时系统还会报错.下面记录笔者了解到的关于头文件stdafx.h的信息. 使用预编译头 stdafx.h并不是标准C++头文件,也就是说,该文件本质上相当于自定义的一个头文件( 这里是VS默认自定义的文件),与项目的源代码文件存放在同一个文件文件夹下,通过#include"stdafx.h"引用: 从内容上来…
我们在编敲代码中头文件是常常使用的. 可是头文件是应该包括在.H文件里还是在.cpp文件里.在这个其中有什么样去差别呢. 假如说我们编写了一个a.cpp  .我们将a.cpp文件的变量和函数申明在a.h中. 在a.h文件有使用了b.中定义的类型type1数据m_type,相同b.cpp的头文件一些变量也声明在b.h中. 此时我们当然能够在a.cpp中包括b.h 也能够在a.h中.这样都是可行的.由于我们编译的时候会会将b.h包括进来. 而.h文件是不參与编译的.然后我们继续深入. 假如我们将b.…
  c语言头文件怎么写?我一直有这样的疑问,但是也一直没去问问到底咋回事:所以今天一定要把它弄明白! 其实学会写头文件之后可以为我们省去不少事情,可以避免书写大量的重复代码.有利于整理思路.使代码脉络更加清晰... 总之,好处多多学起来还不难就对了,还在等什么快来看看吧!   首先,我们要建一个头文件,命名为abc.h   然后就是内容了,其大致格式如下: #ifndef __ABC_H__ //ifndef 实际上就是“if not define”  如果没有定义  #define __ABC…
用C++编写比较大型的项目时,文件的分割管理确实确实是非常必要的 .下面就非常简洁明了地谈谈头文件(.h)和源文件(.cc)应该怎么写. 头文件(.h):写类的声明(包括类里面的成员和方法的声明).函数原型.#define常数等,但一般来说不写出具体的实现. 在写头文件时需要注意,在开头和结尾处必须按照如下样式加上预编译语句(如下): #ifndef CIRCLE_H #define CIRCLE_H //你的代码写在这里 #endif 这样做是为了防止重复编译,不这样做就有可能出错.至于CIR…
[源码下载] 背水一战 Windows 10 (91) - 文件系统: Application Data 中的文件操作, Application Data 中的“设置”操作, 通过 uri 引用 Application Data 中的媒体 作者:webabcd 介绍背水一战 Windows 10 之 文件系统 Application Data 中的文件操作 Application Data 中的“设置”操作 通过 uri 引用 Application Data 中的媒体 示例1.演示如何在 Ap…
[源码下载] 背水一战 Windows 10 (90) - 文件系统: 获取 Package 中的文件, 可移动存储中的文件操作, “库”管理 作者:webabcd 介绍背水一战 Windows 10 之 文件系统 获取 Package 中的文件 可移动存储中的文件操作 “库”管理 示例1.演示如何获取 Package 中的文件FileSystem/PackageData/Demo.xaml <Page x:Class="Windows10.FileSystem.PackageData.D…
网上搜索无果,于是自己查看了一下makefile的info文件,其中解释如下: [java] view plain copy print? target : prerequisites   [TAB]command1   [TAB]command2   [TAB]...   [TAB]commandN   其中的[TAB]就是键盘上的Tab键,不可以用空格替代,这些Makefile的常识,这里就不赘述. makefile.info中 4.3 Types of Prerequisites中介绍了两…
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5638149.html 参考网址: http://zhidao.baidu.com/link?url=bHwvS7JMfpfQAYUkbwnZt64mE_hd_gD7QbNkc406kri_AJmxNwCpgiNwy0LPzPHDZMvv7eb1l5l9qTX0uW6wrSCGpu2CmK4TT81TI4wrl93 使用dpkg时,提示:dpkg:处理软件包XXX时出错: 依赖关系问题,仍未被配置 如…
使用dpkg进行软件安装时,提示:dpkg:处理软件包XXX时出错:依赖关系问题,仍未被配置 使用如下命令,sudo apt-get install -f 等分析完之后,重新使用dpkg –i XXX.deb,就可以了.…
头文件相当于是声明的集合,包括头文件的语句#Include实质为程序代码的宏替换. 编译阶段将函数和变量登记在符号表,链接时将各种函数的入口地址在其中查找到来调用,解引用.…
英文原文地址 在开发大型的软件项目时,头文件需要得到恰当的管理,甚至在c中也会面临这种问题,当我们用c++开发时,头文件的管理会变得更复杂,更加耗费我们的时间去管理,下面我将讲一些包含规则来简化这个苦差事. 头文件包含规则 当在在当前正在编写的文件中没有预先相应的声明时我们需要include我们需要的头文件,否则我们需要声明. 头文件应该设计的与include的顺序无关. 例如在写x.cpp时尽量确保x.h是x.cpp需要的第一个header file. header file的包含机制允许包含…
务必提前预读这里的内容:http://www.cnblogs.com/stemon/p/3999844.html 回到cpp文件与头文件各写什么内容的话题上: 理论上来说cpp文件与头文件里的内容,只要是C语言所支持的,无论写什么都可以的,比如你在头文件中写函数体实现,任何一个cpp文件包含此头文件就可以将这个函数编译成目标文件的一部分(编译是以cpp文件为单位的,如果不在任何cpp文件中包含此头文件的话,这段代码就形同虚设),你可以在cpp文件中进行函数声明.变量声明.结构体声明,这也不成问题…
  目前<scope>可以使用5个值: (1) compile (编译) compile是默认的范围:如果没有提供一个范围,那该依赖的范围就是编译范围.编译范围依赖在所有的classpath 中可用,同时它们也会被打包. (2) provided (已提供) 类似compile,期望JDK.容器或使用者会提供这个依赖.如servlet.jar.provided 依赖只有在当JDK 或者一个容器已提供该依赖之后才使用.例如, 如果你开发了一个web 应用,你可能在编译classpath 中需要可…
1.编译器会单独编译每个cpp文件.头文件会复制到cpp文件中. 2.有时会遇到这样的一个问题a.cpp要调用b.cpp中的函数,而b.cpp又要调用a.cpp中的函数.这就牵扯到相互调用.这时如果我们把b.h中包含a.h,a.h中包含b.h.这时后编译会出现错误.解决的办法是将a.h包含在b.cpp中,将b.h包含在a.cpp中.…
一.类嵌套的疑问 C++头文件重复包含实在是一个令人头痛的问题,前一段时间在做一个简单的数据结构演示程序的时候,不只一次的遇到这种问题.假设我们有两个类A和B,分别定义在各自的有文件A.h和B.h中,但是在A中要用到B,B中也要用到A,但是这样的写法当然是错误的: class B; class A { public: B b; }; class B { public: A a; }; 因为在A对象中要开辟一块属于B的空间,而B中又有A的空间,是一个逻辑错误,无法实现的.在这里我们只需要把其中的一…
先了解这里的相关知识:http://www.cnblogs.com/stemon/p/4000468.html 头文件的中的#ifndef,这是一个很关键的东西.比如你有两个C文件,这两个C文件都include了同一个头文件.而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突. 还是把头文件的内容都放在#ifndef和#endif中吧.不管你的头文件会不会被多个文件引用,你都要加上这个.一般格式是这样的: #ifndef <标识> #define <标识>…
头文件(.h): 写类的声明(包括类里面的成员和方法的声明).函数原型.#define常数等,但一般来说不写出具体的实现. 在写头文件时需要注意,在开头和结尾处必须按照如下样式加上预编译语句(如下): #ifndef CIRCLE_H#define CIRCLE_H//你的代码写在这里#endif 这样做是为了防止重复编译,不这样做就有可能出错. 至于CIRCLE_H这个名字实际上是无所谓的,你叫什么都行,只要符合规范都行.原则上来说,非常建议把它写成这种形式,因为比较容易和头文件的名字对应.…
在使用ajax异步调用的时候,可能碰到同时调用多个ajax这种情况.而且多个ajax之间还存在依赖关系.这种情况怎么处理呢?   有两种办法: 一种是多个ajax嵌套调用,这时需要设置async为false,也就是便成同步的了,但是这种方法存在一个弊端,如果后台出现问题,一直忙,不能返回数据,浏览器将出现卡死的情况.   第二种方法是使用队列的方法.将ajax加入到队列中,然后依次调用即可. 这里举个例子. index.html<!DOCTYPE html> <html> <…
如果尔等之辈问本大神,为什么需要头文件呢?本大神告诉你:想要知道为什么需要头文件的话,你就应该知道C语言编译的过程: 本大神为你们准备了基本知识: C语言文件的编译与执行的四个阶段并分别描述: C++中的头文件和源文件:如何写头文件    (这个写的很好,明白) 为什么有头文件的原因:(按步骤来) 1. 在一个文件A中,如果要使用另一个文件B里的函数 sum(),那么我们就需要在文件A里面声明函数 sum();  对吧: 2. 如果在文件A 需要使用文件B里的多个函数 , 那么就需要在文件A中声…
最近有人在topcoder上提出使用fleet在集群上部署service时有时候会发现,当启动依赖于整个集群服务的service时,只会检查那个service所在机器的依赖关系,这样就会造成一些问题,比如说用多台服务器提供一个paas的时候,只要其中一个服务器坏掉,那个service就不应该启动. 正好之前用过fleet,于是就深入研究一番.fleet是一个分布式的服务启动管理系统,可以将某个服务自定义的运行在集群之中.fleet检查service依赖的方法有两种, 一个是unit file自身…
.h头文件和.cpp文件的区别 疑惑1:.h文件能够编写main函数吗? 实验: 编写test.h文件,里面包含main函数 若直接编译g++ test.h -o test,通过file命令 file test,得到如下结果test: GCC precompiled header (version ) for C++ ———test文件是预编译头文件 推测:.h文件不能单独生成.o文件 疑惑2:.h文件中声明和定义的变量和函数是如何与.cpp文件结合的? 实验: 编写test.h文件,里面包含一…
在xxx.h头文件的代码中夹杂的“<h>      </h>”.“<o>”“<i>”.“<c1>   </c>”和“<e>    </e>”这些符号是MDK自带的配置向导控制符号,用这些符号控制的代码可以生成一个对应的图形界面的配置向导,有关配置向导的语法,可在MDK的帮助文档里面找到,在搜索栏输入Configuration  Wizard 即可搜索到.…