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

回答編集履歴

1

追記

2016/04/28 17:13

投稿

toki_td
toki_td

スコア2850

answer CHANGED
@@ -1,5 +1,5 @@
1
- C++ではソースファイルコンパイル段階で型が決定できる必要があります。
1
+ C++ではソースコードはファイル単位でコンパイルされため、あるソースファイルをプリプロセッサが展開した時点**そのファイルだけで**全ての型が決定できる必要があります。
2
- sub.hはmainのあるソースファイルにプリプロセッサで展開され以下のようになりま
2
+ しかし、sub.hはmainのあるソースコードにプリプロセッサで展開すると
3
3
 
4
4
  ```C++
5
5
  class C {
@@ -12,8 +12,7 @@
12
12
  c();
13
13
  }
14
14
  ```
15
-
16
- これだけを見てもoperator()の型は不明です。
15
+ となり、operator()の戻り値の型は決定きずエラーになります。
17
16
  インラインにすると
18
17
 
19
18
  ```C++
@@ -31,4 +30,4 @@
31
30
  }
32
31
  ```
33
32
  ですからreturn 0 から 戻り値の型はintに決定できるのでコンパイルできます。
34
- 複数のソース内容がくっつくのはそれぞれのコンパイルが終わってリンクをする段階なのでコンパイラは別のソースファイルから型を決定できないのです。
33
+ 複数のソースに分かれている内容がくっつくのはそれぞれのコンパイルが終わってリンクをする段階なのでコンパイラは別のソースコードから型を決定できないのです。