回答編集履歴
3
追記
test
CHANGED
@@ -59,3 +59,34 @@
|
|
59
59
|
|
60
60
|
#endif
|
61
61
|
```
|
62
|
+
|
63
|
+
---
|
64
|
+
|
65
|
+
これもう,ライブラリの方はこうしてしまって……
|
66
|
+
|
67
|
+
```C++
|
68
|
+
//(ライブラリのヘッダ)
|
69
|
+
namespace my_library
|
70
|
+
{
|
71
|
+
struct Settings
|
72
|
+
{
|
73
|
+
int max_line_width = 80;
|
74
|
+
};
|
75
|
+
|
76
|
+
//なんということでしょう!
|
77
|
+
extern Settings settings; //実体は定義しないという荒業!!
|
78
|
+
}
|
79
|
+
```
|
80
|
+
|
81
|
+
`settings` はユーザに定義させる,というのは暴挙だろうか…?
|
82
|
+
|
83
|
+
```C++
|
84
|
+
//(ユーザのコード)
|
85
|
+
|
86
|
+
//my_library を使うならば settings をどこかで定義してね!っていう
|
87
|
+
namespace my_library
|
88
|
+
{
|
89
|
+
Settings settings{}; //デフォルト値で良いならこんな.
|
90
|
+
};
|
91
|
+
```
|
92
|
+
|
2
追記
test
CHANGED
@@ -35,3 +35,27 @@
|
|
35
35
|
|
36
36
|
int main(){ ... }
|
37
37
|
```
|
38
|
+
|
39
|
+
---
|
40
|
+
|
41
|
+
あるいは,ユーザがこんなヘッダでも書くとか…
|
42
|
+
(アクロバティック感がマッハすぎて,自分では決してやりたくない気がしないでもないが)
|
43
|
+
|
44
|
+
```C++
|
45
|
+
#include "my_library.hpp"
|
46
|
+
|
47
|
+
#ifdef DEBUGGING
|
48
|
+
|
49
|
+
int UserMain();
|
50
|
+
|
51
|
+
int main()
|
52
|
+
{
|
53
|
+
my_library::max_line_width = 100;
|
54
|
+
return UserMain();
|
55
|
+
}
|
56
|
+
|
57
|
+
//Wow!!
|
58
|
+
#define main UserMain
|
59
|
+
|
60
|
+
#endif
|
61
|
+
```
|
1
微修正
test
CHANGED
@@ -26,8 +26,9 @@
|
|
26
26
|
とかなんとか書いておくのだとダメなのだろうか? とか思うのですが,どうなのでしょうか?
|
27
27
|
(不格好だからダメとか?)
|
28
28
|
|
29
|
+
使う側としてはこんな感じ:
|
29
30
|
```C++
|
30
|
-
//※ユーザが設定値を変えたい場合にはマクロ
|
31
|
+
//※ユーザが設定値を変えたい場合にはマクロ定義を書く.
|
31
32
|
#define MAX_LINE_WIDTH (100)
|
32
33
|
|
33
34
|
#include "my_library.h" //↑のライブラリのヘッダ
|