这两个是在研究一个开源软件的源码时发现的。之前未见过,所以好好研究了一下。
extern "C":告诉C++编译器,在链接时使用C的方法。
因为C++有可以重载函数,但C没有。所以C++编译器在链接时就不能以函数名作为唯一的
标识去链接实现的代码,它会将函数名与参数混在一块产生一个唯一的标识。而C就不用这样,所以如果声明了extern "C",C++编译器就不会在链接的时候加上参数等信息了。
我碰到的这个char[]初始化的问题其实到现在并没有想明白,期待高手解答。源码是
const char version[] = " version " VERSION "." SUBVERSION "." MINORVERSION;
其中VERSION,SUBVESION,MINOVERSION是在Makefile中定义的,并在gcc编译时加入-D参数指定。值分别为:"0","8","0"
所以,最后的结果是:
const char version[] = " version " "0" "." "8" "." "0";
这种初始化方法我用程序验证过,是可行的。最后的就是一个完整的字符串"version 0.8.0"。不明白这种方法,望指教。