gcc编译器符号内部修饰有关问题
发布时间: 2013-08-04 18:26:16 作者: rapoo
gcc编译器符号内部修饰问题
在看《程序员的自我修养》时,里面提到编译器会对符号进行内部修饰并给了下面一个例子,说是在gcc下输出是42,
但是我自己试了一下,根本编译通不过,因为var会被修饰成_ZN6myname3varE,在汇编时提示_ZN6myname3varE重定义:
#include <stdio.h>
namespace myname{
double var = 42;
}
extern "C" double _ZN6myname3varE = 10.0;
int main(){
printf("%d\n", _ZN6myname3varE);
return 0;
}
[解决办法]有 = 10 的时候, 它是一个定义. 去掉后是一个声明.