質問編集履歴
3
誤字脱字の修正
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -17,13 +17,13 @@
|
|
|
17
17
|
static void moge ( int c, int d );
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
|
-
* @def FOO
|
|
20
|
+
* @def FOO (-1)
|
|
21
21
|
* 適当な説明
|
|
22
22
|
*/
|
|
23
23
|
#define FOO (-1)
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
|
-
* @def MOO
|
|
26
|
+
* @def MOO (1)
|
|
27
27
|
* 適当な説明
|
|
28
28
|
*/
|
|
29
29
|
#define MOO (1)
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
> Searching for documented defines...
|
|
70
70
|
hoge.c:12: warning: documentation for unknown define ¥HOGE_MAX found.
|
|
71
71
|
|
|
72
|
-
関数形式マクロの改行にし
|
|
72
|
+
関数形式マクロの改行に使用した`¥`が後の`@def`に影響を与えているようです。
|
|
73
73
|
|
|
74
74
|
###試したこと
|
|
75
75
|
|
2
問題点の記述をより正確にした。
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
下記に紹介するような複数行に渡る関数形式マクロを使用すると、2つの問題が発生してしまいました。
|
|
6
6
|
|
|
7
7
|
0. 未知の定義`¥HOGE_MAX`が定義される(doxygen warningの発生)
|
|
8
|
-
1. 関数mogeについて、`static void moge ( int c, int d )`の説明と、`moge(x, MOO)`の説明の、2つの説明が表示される
|
|
8
|
+
1. 出力したHTMLドキュメントの関数mogeについて、`static void moge ( int c, int d )`の説明と、`moge(x, MOO)`の説明の、2つの説明が表示される
|
|
9
9
|
2. 出力したHTMLドキュメントにHOGE_MAXの説明「影響を受ける記述」が表示されない
|
|
10
10
|
|
|
11
11
|
複数行に渡る関数形式マクロを使用しても、意図通りにdoxygenでドキュメントを出力するための方法はありますでしょうか。
|
1
ソースを正確に記述した。エラーメッセージを記載した。問題点を明確にした。
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -2,38 +2,207 @@
|
|
|
2
2
|
Windows・Cygwin環境下にて、C言語で開発を行なっています。
|
|
3
3
|
詳細設計レベルのドキュメントに関してはdoxygenで出力することになっているのですが、少々困っています。
|
|
4
4
|
|
|
5
|
-
複数行に渡る関数形式マクロを使用すると、
|
|
5
|
+
下記に紹介するような複数行に渡る関数形式マクロを使用すると、2つの問題が発生してしまいました。
|
|
6
6
|
|
|
7
|
+
0. 未知の定義`¥HOGE_MAX`が定義される(doxygen warningの発生)
|
|
8
|
+
1. 関数mogeについて、`static void moge ( int c, int d )`の説明と、`moge(x, MOO)`の説明の、2つの説明が表示される
|
|
9
|
+
2. 出力したHTMLドキュメントにHOGE_MAXの説明「影響を受ける記述」が表示されない
|
|
10
|
+
|
|
11
|
+
複数行に渡る関数形式マクロを使用しても、意図通りにdoxygenでドキュメントを出力するための方法はありますでしょうか。
|
|
12
|
+
|
|
7
13
|
###該当のソースコード
|
|
8
14
|
```C
|
|
15
|
+
|
|
16
|
+
static void hoge ( int a, int b );
|
|
17
|
+
static void moge ( int c, int d );
|
|
18
|
+
|
|
9
19
|
/**
|
|
20
|
+
* @def FOO
|
|
21
|
+
* 適当な説明
|
|
22
|
+
*/
|
|
23
|
+
#define FOO (-1)
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @def MOO
|
|
27
|
+
* 適当な説明
|
|
28
|
+
*/
|
|
29
|
+
#define MOO (1)
|
|
30
|
+
|
|
31
|
+
/**
|
|
10
32
|
* @def Hoge(x)
|
|
33
|
+
* 問題が発生する原因となるマクロ
|
|
34
|
+
*/
|
|
35
|
+
#define Hoge(x) ¥
|
|
36
|
+
{ ¥
|
|
37
|
+
hoge(x, FOO); ¥
|
|
38
|
+
moge(x, MOO); ¥
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* @def HOGE_MAX (0xFF)
|
|
43
|
+
* 影響を受ける記述
|
|
44
|
+
*/
|
|
45
|
+
#define HOGE_MAX (0xFF)
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* @brief 適当な説明
|
|
49
|
+
*
|
|
50
|
+
* @param[in] (a) 適当な説明
|
|
51
|
+
* @param[in] (b) 適当な説明
|
|
52
|
+
* @return -
|
|
53
|
+
*/
|
|
54
|
+
static void hoge ( int a, int b )
|
|
55
|
+
{}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* @brief 適当な説明
|
|
59
|
+
*
|
|
60
|
+
* @param[in] (c) 適当な説明
|
|
61
|
+
* @param[in] (d) 適当な説明
|
|
62
|
+
* @return -
|
|
63
|
+
*/
|
|
64
|
+
static void moge ( int c, int d );
|
|
65
|
+
{}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### 表示されたエラーメッセージ
|
|
69
|
+
> Searching for documented defines...
|
|
70
|
+
hoge.c:12: warning: documentation for unknown define ¥HOGE_MAX found.
|
|
71
|
+
|
|
72
|
+
関数形式マクロの改行にしようした`¥`が後の`@def`に影響を与えているようです。
|
|
73
|
+
|
|
74
|
+
###試したこと
|
|
75
|
+
|
|
76
|
+
#### 試したことその1
|
|
77
|
+
|
|
78
|
+
```C
|
|
79
|
+
|
|
80
|
+
static void hoge ( int a, int b );
|
|
81
|
+
static void moge ( int c, int d );
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* @def FOO
|
|
11
85
|
* 適当な説明
|
|
12
86
|
*/
|
|
87
|
+
#define FOO (-1)
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* @def MOO
|
|
91
|
+
* 適当な説明
|
|
92
|
+
*/
|
|
93
|
+
#define MOO (1)
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* @def Hoge(x)
|
|
97
|
+
* 適当な説明
|
|
98
|
+
*/
|
|
13
|
-
#define Hoge(x)
|
|
99
|
+
#define Hoge(x) ¥
|
|
14
|
-
{
|
|
100
|
+
{ ¥
|
|
15
|
-
(x
|
|
101
|
+
hoge(x, FOO); ¥
|
|
102
|
+
moge(x, MOO); ¥
|
|
16
103
|
}
|
|
17
104
|
|
|
105
|
+
/** @def */ /* <---- このコメントを追加 */
|
|
106
|
+
|
|
18
107
|
/**
|
|
19
108
|
* @def HOGE_MAX (0xFF)
|
|
20
109
|
* ほげ最大値
|
|
21
110
|
*/
|
|
22
111
|
#define HOGE_MAX (0xFF)
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* @brief 適当な説明
|
|
115
|
+
*
|
|
116
|
+
* @param[in] (a) 適当な説明
|
|
117
|
+
* @param[in] (b) 適当な説明
|
|
118
|
+
* @return -
|
|
119
|
+
*/
|
|
120
|
+
static void hoge ( int a, int b )
|
|
121
|
+
{}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* @brief 適当な説明
|
|
125
|
+
*
|
|
126
|
+
* @param[in] (c) 適当な説明
|
|
127
|
+
* @param[in] (d) 適当な説明
|
|
128
|
+
* @return -
|
|
129
|
+
*/
|
|
130
|
+
static void moge ( int c, int d );
|
|
131
|
+
{}
|
|
23
132
|
```
|
|
24
133
|
|
|
25
|
-
職場で発生した問題で、手元に再現環境がないため、doxygenが出力した詳細なエラーメッセージ(warningでした)についてはわかりません。
|
|
26
|
-
|
|
134
|
+
コメント`/** @def */`を追加すると、ワーニングは消えました。
|
|
135
|
+
(問題点1は解消されました)
|
|
136
|
+
どういう作用によるものかはわかっていません。
|
|
137
|
+
(正しく書くなら/** * @def */だと思いますが、これでは解消されませんでした)
|
|
138
|
+
(@defの代わりに@fnでは解消されませんでした)
|
|
139
|
+
問題点2は解消されませんでした。
|
|
140
|
+
問題点3も解消されませんでした。
|
|
27
141
|
|
|
28
|
-
|
|
142
|
+
#### 試したことその2
|
|
29
143
|
|
|
30
|
-
|
|
144
|
+
回答で頂いたセミコロンを追加する案を試してみました。
|
|
31
145
|
|
|
32
|
-
|
|
146
|
+
```C
|
|
33
|
-
関数形式マクロ自体のdoxygen用コメントを削除してみましたが、関係ありませんでした。
|
|
34
|
-
関数形式マクロの最後の閉じカッコ(})の後ろに/** @def */と書くと、doxygenのwarning自体は表示されなくなりました。
|
|
35
|
-
しかし、やはりHOGE_MAXの説明「ほげ最大」は表示されないままでした。
|
|
36
147
|
|
|
148
|
+
static void hoge ( int a, int b );
|
|
149
|
+
static void moge ( int c, int d );
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* @def FOO
|
|
153
|
+
* 適当な説明
|
|
154
|
+
*/
|
|
155
|
+
#define FOO (-1)
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* @def MOO
|
|
159
|
+
* 適当な説明
|
|
160
|
+
*/
|
|
161
|
+
#define MOO (1)
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* @def Hoge(x)
|
|
165
|
+
* 適当な説明
|
|
166
|
+
*/
|
|
167
|
+
#define Hoge(x) ¥
|
|
168
|
+
{ ¥
|
|
169
|
+
hoge(x, FOO); ¥
|
|
170
|
+
moge(x, MOO); ¥
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
; /* <---- このセミコロンを追加 */
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* @def HOGE_MAX (0xFF)
|
|
177
|
+
* ほげ最大値
|
|
178
|
+
*/
|
|
179
|
+
#define HOGE_MAX (0xFF)
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* @brief 適当な説明
|
|
183
|
+
*
|
|
184
|
+
* @param[in] (a) 適当な説明
|
|
185
|
+
* @param[in] (b) 適当な説明
|
|
186
|
+
* @return -
|
|
187
|
+
*/
|
|
188
|
+
static void hoge ( int a, int b )
|
|
189
|
+
{}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* @brief 適当な説明
|
|
193
|
+
*
|
|
194
|
+
* @param[in] (c) 適当な説明
|
|
195
|
+
* @param[in] (d) 適当な説明
|
|
196
|
+
* @return -
|
|
197
|
+
*/
|
|
198
|
+
static void moge ( int c, int d );
|
|
199
|
+
{}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
セミコロンを追加した場合、問題点1は解消されます。
|
|
203
|
+
しかし、代わりに、HTMLドキュメントに`変数¥`が出力されるようになってしましました。
|
|
204
|
+
また、問題点2、問題点3は解消されませんでした。
|
|
205
|
+
|
|
37
206
|
###補足情報(言語/FW/ツール等のバージョンなど)
|
|
38
207
|
Windows
|
|
39
208
|
Cygwin
|