a.h
#ifndef A_H_
#define A_H_extern int value;
#endif
声明了value变量
code1.cpp
#include<stdio.h>
#include "a.h"int value=1;
在code1.cpp中声明并定义、赋值了变量value。不可以在函数中去定义value,会报错。猜测是因为函数中的局部变量会释放空间
#include<stdio.h>
#include "a.h"int main(){print("%d\n",value);value=2;print("%d\n",value);
}
在code2.cpp中直接使用变量value
编译:
g++ -Wall -o test code1.cpp code2.cpp
运行:
./test
输出:
1
2
http://blog.csdn.net/horstlinux/article/details/8115270
静态链接浪费内存和磁盘空间、模块更新困难等问题,因此寻找一种更好的办法来组织程序模块。
静态链接对程序的更新、部署和发布也会带来很多麻烦。
动态链接:
就是不对那些组成程序的目标文件进行链接,等到程序要运行时才进行链接。
动态链接的方式使得开发过程中各个模块更加独立、耦合度更小,便于不同的开发者和开发组织之间进行独立的开发和测试。
动态链接还有一个特点就是程序在运行时可以动态的选择加载各种程序模块,使得插件成为可能。
Linux系统中,ELF动态链接文件被称为动态共享对象(DSO,Dynamic Shared Objects),简称共享对象,它们一般都是以“.so”为扩展名;动态链接文件被称为动态链接库。在windows下为.dll。
- /*Program1.c */
- #include "Lib.h"
- int main()
- {
- foobar(1);
- return 0;