回答編集履歴
2
追記
test
CHANGED
@@ -76,4 +76,4 @@
|
|
76
76
|
|
77
77
|
* (関数次第では悪くはないやり方:)`inline int Randam10(){ ... }`とする
|
78
78
|
|
79
|
-
* (とりあえず回避されるが普通じゃないやり方:)`static int Randam10(){ ... }`とかする
|
79
|
+
* (とりあえず回避されるが普通じゃないやり方:)`static int Randam10(){ ... }` とか `namespace{ int Randam10(){ ... } }` とかする
|
1
追記
test
CHANGED
@@ -57,3 +57,23 @@
|
|
57
57
|
2つの翻訳単位に,Randam10()の定義が存在する状態.
|
58
58
|
|
59
59
|
だから,リンク時に多重定義になっちゃう.
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
---
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
一般に(と言っていいか?),includeされる側のファイル(ヘッダ)に関数の定義(のような,定義が複数になったらまずい物)を書かないのでは,このような問題を回避するため.
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
解決方法はいくつかある.
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
* (普通のやりかた:)func.h には 関数Randam10 の**宣言**を書き,**定義**は別の翻訳単位(例えばfunc.cppとか)に書く
|
76
|
+
|
77
|
+
* (関数次第では悪くはないやり方:)`inline int Randam10(){ ... }`とする
|
78
|
+
|
79
|
+
* (とりあえず回避されるが普通じゃないやり方:)`static int Randam10(){ ... }`とかする
|