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

質問編集履歴

3

誤字脱字の修正

2017/09/14 15:02

投稿

megane814
megane814

スコア11

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
- 関数形式マクロの改行にしようした`¥`が後の`@def`に影響を与えているようです。
72
+ 関数形式マクロの改行に使用した`¥`が後の`@def`に影響を与えているようです。
73
73
 
74
74
  ###試したこと
75
75
 

2

問題点の記述をより正確にした。

2017/09/14 15:02

投稿

megane814
megane814

スコア11

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

ソースを正確に記述した。エラーメッセージを記載した。問題点を明確にした。

2017/09/14 15:00

投稿

megane814
megane814

スコア11

title CHANGED
File without changes
body CHANGED
@@ -2,38 +2,207 @@
2
2
  Windows・Cygwin環境下にて、C言語で開発を行なっています。
3
3
  詳細設計レベルのドキュメントに関してはdoxygenで出力することになっているのですが、少々困っています。
4
4
 
5
- 複数行に渡る関数形式マクロを使用すると、改行ためのバックスラッシュ(\)(Windows環境なので¥)、次のdoxygenコメントと結合して(?)、意図ない特殊コマンドとして認識されてしってるようなのです
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+1) ¥
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
- 意味的には、意図しないド¥HOGE_MAXが〜いう感じだったと思い
134
+ ト`/** @def */`を追加する、ワーニングは消えした
135
+ (問題点1は解消されました)
136
+ どういう作用によるものかはわかっていません。
137
+ (正しく書くなら/** * @def */だと思いますが、これでは解消されませんでした)
138
+ (@defの代わりに@fnでは解消されませんでした)
139
+ 問題点2は解消されませんでした。
140
+ 問題点3も解消されませんでした。
27
141
 
28
- 出力されたhtmlファイルを表示すると、Hoge(x)については正常に表示されましたが、HOGE_MAX説明「ほげ最大」が表示されませんでした。
142
+ #### 試したことそ
29
143
 
30
- 複数行に渡る関数形式マクロを使用しても、意図通りにdoxygenドキュメ出力するための方法はありすでょうか
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