回答編集履歴
5
追記
answer
CHANGED
@@ -10,9 +10,11 @@
|
|
10
10
|
#include COMMON_INCLUDE(my_header.h)
|
11
11
|
```
|
12
12
|
|
13
|
+
規格などは下の通りですが、「できない」、というのは僕の間違いでした。
|
14
|
+
マクロの使い方に発想が足りませんでしたね、、、
|
13
15
|
|
14
|
-
|
16
|
+
以下、旧回答
|
15
|
-
|
17
|
+
-------------------------------------------------------------------------------
|
16
18
|
[JISの規格 6.10.2ソースファイル取込み](http://kikakurui.com/x3/X3010-2003-01.html)を見る限り、includeのファイル名としてマクロを記述することは可能だが、注釈(143)に隣接する文字列リテラルは連結されない、とあるのでそういった記述は無理だと思います。
|
17
19
|
C++でも規格ではありませんが[cppreference](http://en.cppreference.com/w/cpp/preprocessor/include)ではマクロの展開結果が<>か""で囲われている場合に限り許可される、とあるので同じだと思います。
|
18
20
|
|
4
追記
answer
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
```
|
12
12
|
|
13
13
|
|
14
|
-
すみません、以下、僕の
|
14
|
+
すみません、以下、僕の間違いでした。
|
15
15
|
|
16
16
|
[JISの規格 6.10.2ソースファイル取込み](http://kikakurui.com/x3/X3010-2003-01.html)を見る限り、includeのファイル名としてマクロを記述することは可能だが、注釈(143)に隣接する文字列リテラルは連結されない、とあるのでそういった記述は無理だと思います。
|
17
17
|
C++でも規格ではありませんが[cppreference](http://en.cppreference.com/w/cpp/preprocessor/include)ではマクロの展開結果が<>か""で囲われている場合に限り許可される、とあるので同じだと思います。
|
3
回答誤り訂正
answer
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
気になったので調べ直したら以下の方法なら可能でした。
|
2
|
+
文字列として連結せずに最後に文字列化 or <>で囲んでやればいけます。
|
3
|
+
|
4
|
+
```C
|
5
|
+
#define LOCAL_INCLUDE(x) #x
|
6
|
+
#define GLOBAL_INCLUDE(x) <x>
|
7
|
+
|
8
|
+
#define COMMON_INCLUDE(x) GLOBAL_INCLUDE(common/include/dir/##x)
|
9
|
+
|
10
|
+
#include COMMON_INCLUDE(my_header.h)
|
11
|
+
```
|
12
|
+
|
13
|
+
|
14
|
+
すみません、以下、僕の勘違いでした。
|
15
|
+
|
1
16
|
[JISの規格 6.10.2ソースファイル取込み](http://kikakurui.com/x3/X3010-2003-01.html)を見る限り、includeのファイル名としてマクロを記述することは可能だが、注釈(143)に隣接する文字列リテラルは連結されない、とあるのでそういった記述は無理だと思います。
|
2
17
|
C++でも規格ではありませんが[cppreference](http://en.cppreference.com/w/cpp/preprocessor/include)ではマクロの展開結果が<>か""で囲われている場合に限り許可される、とあるので同じだと思います。
|
3
18
|
|
2
誤記修正
answer
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
[JISの規格 6.10.2ソースファイル取込み](http://kikakurui.com/x3/X3010-2003-01.html)を見る限り、includeのファイル名としてマクロを記述することは可能だが、注釈(143)に隣接する文字列リテラルは連結されない、とあるのでそういった記述は無理だと思います。
|
2
|
-
C++でも規格ではありませんが[cppreference](http://en.cppreference.com/w/cpp/preprocessor/include)ではマクロの展開結果が<>か""で囲われている場合に限り許可されるとあるので
|
2
|
+
C++でも規格ではありませんが[cppreference](http://en.cppreference.com/w/cpp/preprocessor/include)ではマクロの展開結果が<>か""で囲われている場合に限り許可される、とあるので同じだと思います。
|
3
3
|
|
4
4
|
多分、マクロなのかフォルダ名なのか判定できなくなるためだと思います。
|
5
5
|
VS2017では通りませんでした。
|
1
誤記修正
answer
CHANGED
@@ -14,5 +14,6 @@
|
|
14
14
|
#include HEADER_B
|
15
15
|
#include HEADER_C
|
16
16
|
```
|
17
|
-
といった記載は可能ですから機能ごとにヘッダー一覧マクロを書いたヘッダーを
|
17
|
+
といった記載は可能ですから、機能ごとにヘッダー一覧マクロを書いたヘッダーを作成しておくとかでしょうか?
|
18
|
-
それだったら最初から機能をまとめたヘッダー作ったほうが、という気がしなくもないですが。
|
18
|
+
それだったら最初から機能をまとめたヘッダー作ったほうが、という気がしなくもないですが。
|
19
|
+
機能が巨大で部分的に使用できたり雑多に集めた機能集だとどうしようか悩むところですね。
|