誰かに助言してもらえますか?C++でのconstの内部リンケージ、まだ重複したシンボルがあります
C++のconst
がデフォルトで内部リンケージの場合、以下のコードで複数の定義エラーが発生するのはなぜですか?
まず、ファイルdem.h
:
#ifndef _DEM_H_
#define _DEM_H_
class Dem {
public:
static const int i;
};
const int Dem::i = 10;
#endif
ゼムimp1.cpp
:
#include "dem.h"
#include <iostream>
using namespace std;
extern int foo();
int main() {
cout << foo() << endl;
}
とimp2.cpp
:
#include "dem.h"
int foo() {
return Dem::i ;
}
私は、次のコマンドの結果をコンパイルします。
をC++ 11[basic.link]
から
$ g++ imp1.cpp imp2.cpp
/tmp/ccmGt0OY.o:imp2.cpp:(.rdata+0x0): multiple definition of `Dem::i'
/tmp/cc5sN7dz.o:imp1.cpp:(.rdata+0x0): first defined here
collect2: ld returned 1 exit status
ありがとうございますpaxdiablo !!今、私は分かる。 – Rajat