c/c++中静态链接过程中对未被代码引用的符号的检查
看到一个应该关注的知识点。
之前看到的一个帖子:
http://my.unix-center.net/~Simon_fu/?p=263
大致情况讲的都比较清楚了
a.h:/*******************************************/#include <string> using namespace std; class A { public: A(void); A(const char *s); ~A(void); private: string name; };/**********************************************/a.cpp:/**********************************************/#include "a.h" #include <iostream> using namespace std; A::A(void) { cout<< "A construct!\n"; } A::A(const char *s) { name = string(s); cout<< "A " + name + " construct!\n"; } A::~A(void) {} static A g_a("globalA");/************************************************/test_staticlib.cpp:/*************************************************/#include <stdio.h> #include "../static_lib/a.h" int main() { //A a; //A aa("Local A"); getchar(); }int main() { A a; //A aa("Local A"); getchar(); }a.h:/*******************************************/#include <string> using namespace std; class A { public: A(void); A(const char *s); ~A(void); private: string name; };extern int k; <-------------------------------------void fn(); <-------------------------------------/**********************************************/a.cpp:/**********************************************/#include "a.h" #include <iostream> using namespace std; A::A(void) { cout<< "A construct!\n"; } A::A(const char *s) { name = string(s); cout<< "A " + name + " construct!\n"; } A::~A(void) {} static A g_a("globalA");void fn(){k++;} <-------------------------------------/************************************************/