假设我们写了一个foo.h的头文件,如下:
#ifndef foo_h
#define foo_h
namespace m1 {
void foo();
}
#endif
例外,我们肯定还会写它的相关库文件来实现函数的功能,我们就写一个foo.c吧,如下:
#include <iostream>
#include "foo.h"//这里一定要打双引号,因为它不是标准头文件。
void m1::foo()
{
std::cout<<"hello,world
";
}
最后,我们在写一个main.c文件来调用它:
#include <iostream>
#include "foo.h"
void foo ()//这里我们在主函数也写了一个同名字的foo函数,我们编译的时候会不会因为名字相同报错呢,我们在主函数调用试试。
{
std::cout<<"HELLO, WORLD!
";
}
int main ()
{
m1::foo();//当然不会啦,我们在foo.h头文件编写的foo函数是放在名字空间m1中,所以就和我们自己的foo区分开来了,不过我们在调用时一定要加上它的名字空间。
foo();
return 0;
}
最后我们编译,首先应该:
gcc -c foo.c
gcc -c main.c
这样生成对应的目标文件,最后一步就是:
gcc main.o foo.o -o test
生成可执行文件test,然后运行结果如下:
hello, world
HELLO, WORLD!
由于浏览器的问题,我的截图传不上来,就是手打了运行结果。