C中希望把一段代码,写成头文件的形式,作为后续调用,总不能每次都去粘贴代码吧
于是我按照规定写了这么两个文件
####getfilename.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
char *GetFileName(char *FilePath);
getfilename.c
#include <string.h>
char *GetFileName(char *FilePath)
{
int len;
char *current = NULL;
len = strlen(FilePath);
for (; len>0; len--)
if (FilePath[len] == '134')
{
current = &FilePath[len + 1];
break;
}
return current;
}
|
然后又写了个测试的
1
2
3
4
5
6
7
8
9
10
|
#include <stdio.h>
#include "getfilename.h"
int main ( int argc, char *argv[] )
{
char *y="45648511226456564C47.pdf";
printf ( "%sn",GetFileName(y));
getchar();
return 0;
}
|
然后在gvim中按下了F5(一键编译运行),报错了,说找不到GetFileName
怎么会呢
不信又用cl试了一下,还是一样
然后我试着把getfilename.h改成后缀.c
居然可以了,看来是文件包含问题
但是我想不通的是为什么头文件里可以不包含源文件呢,编译器如何找到源文件里的函数的实现部分呢?
终于找到了“容易理解”的说法
http://www.cnblogs.com/arun/articles/1536803.html
然后我带着这种说法去visual studio里
这么一放
果然VC会把源文件里所有的.c文件都编译成.obj文件,然后在生成的时候,把他们链接起来,至于.h文件,预编译的时候就已经用掉了。