質問編集履歴
2
誤表記の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -31,7 +31,7 @@
|
|
31
31
|
- headerの inline を消去し、mainの "void func" に inline を付ける。
|
32
32
|
- headerの inline を消去し、subの "void func" に inline を付ける。
|
33
33
|
- headerのinlineを消去し、main, sub ともに inline を付ける。
|
34
|
-
いずれも、mainの方の
|
34
|
+
いずれも、mainの方の "void func" のみ実行されました。
|
35
35
|
|
36
36
|
また、ファイルスコープなどの問題かもしれないと考え、「sub.cppから "void func" を呼び出す void func2関数を作成し、main関数で呼び出した」のですが、func2関数も変わらず、subの方の "void func" ではなく、mainの方の "void func" を呼び出しました。
|
37
37
|
|
1
誤字の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -21,10 +21,11 @@
|
|
21
21
|
return 0;
|
22
22
|
}
|
23
23
|
```
|
24
|
-
しかし、見てわかるように “void func”が2回定義されています。
|
24
|
+
しかし、見てわかるように “void func”が2回定義されています。しかしエラーは出ませんでした。
|
25
|
-
ただ、”void func”をinlineでないようにすると、リンクエラーが起こりました。これが起こるのは、inline関数を使うとODR違反を回避できる(らしい)からでは、と考えました。
|
26
|
-
|
25
|
+
試しに上記に書いてあるコード(.exe)を実行すると、mainの方の"void func(std::cout << main)"が実行され、subの方の"void func"(std::cout << sub) が実行されることはありませんでした。
|
26
|
+
ただ、”void func”をinlineでないようにすると、リンクエラーが起こりました。
|
27
27
|
|
28
|
+
|
28
29
|
---
|
29
30
|
↓下記は、同じようにコンパイルを通ったコードです。
|
30
31
|
- headerの inline を消去し、mainの "void func" に inline を付ける。
|