teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

誤表記の修正

2021/11/25 11:24

投稿

b_0_0_d
b_0_0_d

スコア9

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の方のinlineのみ実行されました。
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

誤字の修正

2021/11/25 11:24

投稿

b_0_0_d
b_0_0_d

スコア9

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
- してこのコード(.exe)を実行すると、mainの方の"void func(std::cout << main)"が実行され、subの方の"void func"(std::cout << sub) が実行されることはありませんでした。
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 を付ける。