makefile编写(1):规则
注:本系列内容大部分是基于GNU make的标准,其中cc命令默认调用Linux自带的c编译器程序
makefile介绍
makefile编写(1):规则
makefile编写(2):变量
makefile编写(3):条件执行和函数
makefile规则
makefile规则包含两个部分,
目标依赖关系
生成目标的方法(命令)
下面用一个简单的规则来说明这两种组成部分:
foo.o: foo.c defs.h # foo模块
cc -c -g foo.c
此例中foo.o是目标,foo.c和defs.h是目标所依赖的源文件,其中foo.c包含了defs.h头文件,只有一个命令cc -c -g foo.c。这个规则的目标依赖关系和生成方法分别是:
foo.o依赖于foo.c和defs.h,如果foo.c和defs.h的文件日期比foo.o文件日期要新或是foo.o不存在,那么目标依赖关系发生
这就是为什么要在依赖文件中加入.h文件,虽然不加一样可以编译(因为.h已经在预处理时被包含进.c中了),但是此时.h中的修改将不会导致重新编译
后面的cc命 ...
【转】好好地做一万个小时比看起来更难完成
Malcolm Gladwell在《离群索居》(Outliers)一书中说,要真正掌握某件事情,需要10000小时的练习。其实,10000只是一个粗略的数字,而且这句话的含义也被过度简化了。我已经断断续续进行了40多年的编程。可能已经写了10000个小时的代码,但我甚至还未能成为一个优秀的程序员,更别提成为大师级的程序员了。
我认为有以下几个原因。首先,在这10000小时中,我主要学习了4种不同的编程语言,以及其他一些辅助语言。我从一种语言换到另一种语言时,发现它们有的概念可以互通,有的完全不同。而有趣的是,在这种语言中没有意义的概念可能用来构建它。
例如,JavaScript没有本地链接列表实现,但如果在V8 GitHub库的src目录下搜索“链表”,会发现有76个commit提到了它。即使它们在语言本身中没有用C的链接列表,但会在引擎下使用C的链接列表。
每种语言都有自己的语法和特殊的实现方式,这些是必须要学习的,而不仅仅只是学习其概念。一种语言的最佳实践方式对于另一种语言来说可能不是最好的。在编译语言上我从来没有花过很多时间,几乎总是使用解释型语言,如BASIC、PH ...
毕业论文-开题报告篇
毕业论文要开始准备了,虽然知道早晚躲不过,但还是一点动手开干的欲望也没有。今天早上8点到了图书馆就打开知网看论文,然后一上午四个半小时坐在桌子前看了三章,看完了连题目都忘了叫啥了。。。。明天早起开组会老师还说要拿出成熟方案,不过以目前的形势看估计把我砍成几个人用也拿不出所谓成熟报告了,估计又得拿东拼西凑的东西去糊弄她,哎生死由命了。。。。。
一上午各种折腾,看看这看看那,反正就是不能静下心深入进去看文献本身。算算时间离开题报告汇报也不远了,也就是说几周内要写好大几千字,现在连点思路都没有,还不能水,真愁死个人。听说上届有外审没过的可能延毕了。。。。。。。。。。。。。。。
下面是开题报告相关的一些资源和相关用法,记录在此以作备忘:
开题报告格式,每个学校都不一样,我网上搜了几个latex模板,如果有学校要用latex或者有需要自定义模板的可以参考一下(反正学校肯定也有教程就是了),当然基本上有名的学校肯定都会有自己公开的模板发不出来,随便搜下就可以了。可以提前写点东西什么的熟悉一下也行,LaTex本身也是标记语言,上手应该挺快的 (不过感觉完全没有md好用,尤其是编译套件我感觉lj的 ...
18.Document Distance
Document Distance
这个应该是目前发的里面最难搞的一个了,至今还不知道怎么ac
Plagiarism is a form of academic dishonesty. To fight with such misconducts, plagiarism checkers are developed to compare any submitted article with all the articles stored in a database. The key is that given two documents, how to judge their similarity, or in other words, document distance? The document distance can be measured with their word metrics. In this project, you are supposed to write a program to calculate the distance of any given pa ...
17.Color the tree、Self-printable B+ Tree
Color the Tree
There is a kind of balanced binary search tree named red-black tree in the data structure.
It has the following 5 properties:
(1) Every node is either red or black.
(2) The root is black.
(3) Every leaf (NULL) is black.
(4) If a node is red, then both its children are black.
(5) For each node, all simple paths from the node to descendant leaves contain the same number of black nodes.
For each given binary search tree, you are supposed to tell if it is possible to color the nodes ...
16.hashing简单版、hashing复杂版、串的模式匹配
Hashing
The task of this problem is simple: insert a sequence of distinct positive integers into a hash table, and output the positions of the input numbers. The hash function is defined to be H(key)=key%TSize where TSize is the maximum size of the hash table. Quadratic probing (with positive increments only) is used to solve the collisions. Note that the table size is better to be prime.
If the maximum size given by the user is not prime, you must re-define the table size to be the smallest pr ...
【转】对话Linus Torvalds:大多黑客甚至连指针都未理解
几周前,Linus Torvalds在Slashdot上回答了一些问题。其中有一条引发了开发者们的强烈关注,当被问到他心目中的内核开发者时,他说自己这些日子已经不怎么看代码了,除非是帮别人审查。他稍微暂停了一下,坦言那些“狡猾”的通过文件名查找高速缓存又抱怨自己能力一般的内核“恶魔”(黑客)才是他欣赏的。
他说:
我真的希望更多人能理解真正核心的低层代码。不是无锁名字查找那种大而复杂的代码,只是正确的使用指针的指针而已。比如,我曾看见过许多人通过跟踪上一页条目删除一个单向链接的列表项,然后删除该条目。
例如:
if (prev)
prev->next = entry->next;
else
list_head = entry->next;
每当我看到这些的代码,我会说:“此人不了解指针”。这还是一个可悲的、常见的问题。
如果开发者能够理解指针,只需要使用“指向该条目的指针”并初始化list_head,然后贯穿列表,此时无需使用任何条件语句即可删除该条目,只需通过 *pp = entry->next。
我想我理解指针 ...
15.Insert or Merge、Insertion or Heap Sort、Sort with Swap(0, i)
Insert or Merge
According to Wikipedia:
Insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. Each iteration, insertion sort removes one element from the input data, finds the location it belongs within the sorted list, and inserts it there. It repeats until no input elements remain.
Merge sort works as follows: Divide the unsorted list into N sublists, each containing 1 element (a list of 1 element is considered sorted). Then repeatedly merge t ...
14.公路村村通、关键活动、How Long Does It Take
公路村村通
现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。
输入格式
输入数据包括城镇数目正整数N(≤1000)N(≤1000)N(≤1000)和候选道路数目M(≤3N)M(≤3N)M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。
输出格式
输出村村通需要的最低成本。如果输入数据不足以保证畅通,则输出−1,表示需要建设更多公路。
输入样例
6 15
1 2 5
1 3 3
1 4 7
1 5 4
1 6 2
2 3 4
2 4 6
2 5 2
2 6 6
3 4 6
3 5 1
3 6 1
4 5 10
4 6 8
5 6 3
输出样例
12
ac代码
//(prim版本)
#include<iostream>
#define INFINITY 65535
#define MaxVertexNum 1005
using namespace std;
int G[MaxV ...
13.Subway Map、Public Bike Management
Subway Map
In the big cities, the subway systems always look so complex to the visitors. To give you some sense, the following figure shows the map of Beijing subway. Now you are supposed to help people with your computer skills! Given the starting position of your user, your task is to find the quickest way to his/her destination.
Input Specification
Each input file contains one test case. For each case, the first line contains a positive integer N(≤100)N (≤ 100)N(≤100), the number of subway ...