Skip to content

Commit c8017d3

Browse files
[ci] generate question examples
1 parent ed30cf9 commit c8017d3

36 files changed

Lines changed: 179 additions & 1 deletion

public/docs/cpp/5-project-build/1-0-header-and-source.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22
id: cpp-project-build-header-and-source
33
title: ヘッダファイルとソースファイル
44
level: 2
5+
question:
6+
- ヘッダファイルとソースファイルは必ず分けないといけないのですか?
7+
- ヘッダファイルの拡張子が`.h`と`.hpp`の2種類あるのはなぜですか?使い分けはありますか?
8+
- 「宣言」と「実装」という言葉がよく分かりません。具体的にどう違うのでしょうか?
9+
- 関心の分離、コンパイル時間短縮、再利用性向上というメリットが、なぜヘッダとソースを分けることで得られるのか、もう少し詳しく教えてください。
10+
- クラスの定義はヘッダファイルに記述するとのことですが、具体的なクラスの書き方も教えてもらえますか?
511
---
612

713
## ヘッダファイルとソースファイル

public/docs/cpp/5-project-build/1-2-split-example.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@
22
id: cpp-project-build-split-example
33
title: 分割の例
44
level: 3
5+
question:
6+
- '`math_utils.cpp`で`#include "math_utils.h"`としているのはなぜですか?'
7+
- >-
8+
`math_app.cpp`で`#include <iostream>`と`#include
9+
"math_utils.h"`の違いは何ですか?(`<>`と`""`)
10+
- ヘッダファイルに関数の具体的な処理内容(`return a + b;`のような実装)を書いてはいけないのですか?
11+
- '`math_app.cpp`が`add`関数の具体的な実装を知らないとは、どういう意味ですか?'
12+
- '`math_utils.h`に関数の宣言がない場合、コンパイルはどうなりますか?'
513
---
614

715
### 分割の例

public/docs/cpp/5-project-build/2-0-include-guard.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22
id: cpp-project-build-include-guard
33
title: インクルードガード
44
level: 2
5+
question:
6+
- インクルードガードがないと、なぜ「再定義」エラーが発生するのですか? 具体的なメカニズムが知りたいです。
7+
- >-
8+
`A.h`が`B.h`をインクルードし、ソースファイルが`A.h`と`B.h`の両方をインクルードする、という状況がよくわかりません。具体例を挙げて説明してもらえますか?
9+
- コンパイルエラーのメッセージ「redefinition of 'class B'」とはどういう意味ですか?
10+
- インクルードガードは全てのヘッダファイルに必要ですか?
511
---
612

713
## インクルードガード

public/docs/cpp/5-project-build/2-1-include-guard-by-define.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
id: cpp-project-build-include-guard-by-define
33
title: 伝統的なインクルードガード
44
level: 3
5+
question:
6+
- '`#ifndef`, `#define`, `#endif`は、正確にはどのような順序で処理されるのですか?'
7+
- '`MATH_UTILS_H`というマクロ名は自分で自由に決めていいのですか?命名規則はありますか?'
8+
- このマクロ名が他のヘッダファイルと重複してしまった場合、どうなりますか?
9+
- 伝統的なインクルードガードは、なぜ「伝統的」と呼ばれるのですか?
510
---
611

712
### 伝統的なインクルードガード

public/docs/cpp/5-project-build/2-2-pragma-once.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
id: cpp-project-build-pragma-once
33
title: '#pragma once'
44
level: 3
5+
question:
6+
- '`#pragma once`と伝統的なインクルードガードは、どちらを使っても同じ効果が得られるのですか?'
7+
- '`#pragma once`が「現代的で簡潔」なのはなぜですか?'
8+
- '`#pragma once`を使わない方が良い特定のケースはありますか?'
9+
- なぜ`#pragma once`はマクロ名を考える手間がないのですか?
510
---
611

712
### \#pragma once

public/docs/cpp/5-project-build/3-0-build.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
id: cpp-project-build-build
33
title: プロジェクトのビルド
44
level: 2
5+
question:
6+
- 「オブジェクトファイル」とは何ですか? ソースファイルと何が違うのですか?
7+
- 「リンカ」とは何ですか? 何のために必要なのですか?
8+
- 「ビルド」という言葉は、プログラミングにおいて他にどのような意味で使われることがありますか?
9+
- ビルドシステムを使わずに手動でビルドすることはできないのですか?
510
---
611

712
## プロジェクトのビルド

public/docs/cpp/5-project-build/3-1-gcc-manual.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22
id: cpp-project-build-gcc-manual
33
title: 手動でのビルド (g++)
44
level: 3
5+
question:
6+
- '`g++ -c math_app.cpp -o main.o` の `-c` オプションと `-o` オプションは何を意味するのですか?'
7+
- >-
8+
`g++ main.o math_utils.o -o my_app` の `-o my_app`
9+
は、`my_app`という名前の実行ファイルを作成するという意味ですか?
10+
- 1回の`g++`コマンドでコンパイルとリンクを同時に行う方法と、オブジェクトファイルを介する方法、どちらを使うべきですか?
11+
- '`g++`以外のC++コンパイラでも同じ手順でビルドできますか?'
512
---
613

714
### 手動でのビルド (g++)

public/docs/cpp/5-project-build/3-2-makefile.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
id: cpp-project-build-makefile
33
title: Makefileによる自動化
44
level: 3
5+
question:
6+
- '`Makefile`の`CXX = g++`や`CXXFLAGS = -std=c++17 -Wall`は何を設定しているのですか?'
7+
- '`$(SRCS:.cpp=.o)`や`$<`、`$@`といった記号は何を意味するのですか?'
8+
- '`make`コマンドを実行すると、`Makefile`のどの部分が最初に実行されるのですか?'
9+
- '`clean`ターゲットを実行すると、具体的に何が削除されるのですか? `rm -f`コマンドは危険ではないですか?'
510
---
611

712
### Makefileによる自動化

public/docs/cpp/5-project-build/3-3-cmake.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22
id: cpp-project-build-cmake
33
title: CMakeによるモダンなビルド管理
44
level: 3
5+
question:
6+
- '`CMake`は`Makefile`を生成するとのことですが、なぜ直接`Makefile`を書かずに`CMake`を使うのですか?'
7+
- '`CMakeLists.txt`に`project(MyAwesomeApp)`とありますが、このプロジェクト名は何に使われるのですか?'
8+
- '`set(CMAKE_CXX_STANDARD 17)`は何を意味しますか?なぜ`REQUIRED ON`なのですか?'
9+
- '`mkdir build`してから`cd build`して`cmake ..`と実行する理由は何ですか?'
10+
- '`cmake --build .`と`make`は同じことですか?どちらを使えばいいですか?'
511
---
612

713
### CMakeによるモダンなビルド管理

public/docs/cpp/5-project-build/4-0-summary.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
id: cpp-project-build-summary
33
title: この章のまとめ
44
level: 2
5+
question:
6+
- この章で学んだ中で、最も重要なことは何だと思いますか?
7+
- ヘッダファイルとソースファイルの分割は、大規模なプロジェクトで特に重要だと理解しましたが、小さなプロジェクトでも分割するメリットはありますか?
8+
- '`#pragma once`と`#ifndef`は、開発現場ではどちらがより多く使われていますか?'
9+
- '`make`と`CMake`のどちらを使うか迷ったら、どちらを選べばいいですか?'
510
---
611

712
## この章のまとめ

0 commit comments

Comments
 (0)