1

私はコードを持っています:
Windows MSVC 2012

#include <stdio.h>
#include <string.h>


namespace myname{
    double var = 42;
}

extern "C" double _ZN6myname3varE = 10.0;

int main(){
    printf("%d\n", _ZN6myname3varE);

    return 0;
}

出力は0です。しかし、出力は10. 理由を説明していただけますか?

4

2 に答える 2

0
printf("%d\n", _ZN6myname3varE);

%d%fタイプを出力する に変更する必要がありますdouble

しかし、名前マングリングという別の問題があります。gcc でプログラムをテストすると、エラーが表示されます。

エラー: シンボル `_ZN6myname3varE' は既に定義されています

問題は、名前_ZN6myname3varEがアンダースコアと大文字で始まるため、C++ では予約済みの識別子であることです。

于 2013-08-16T16:48:55.213 に答える