回答編集履歴
1
update
test
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
C標準機能です。両
|
13
|
+
C標準機能です。両者とも論理否定を表します。
|
14
14
|
|
15
15
|
|
16
16
|
|
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
|
20
20
|
|
21
|
-
|
21
|
+
少し微妙ですが、C標準の範囲内です。プリプロセッサをアセンブリ言語と組み合わせています。プリプロセッサはC言語(とC++言語)の一部ですが、プリプロセッサ単体でも利用可能ですし、別プログラミング言語と組み合わせることも可能です。
|
22
22
|
|
23
23
|
|
24
24
|
|
@@ -28,9 +28,23 @@
|
|
28
28
|
|
29
29
|
> 4, 中括弧を大括弧で囲んでいる?
|
30
30
|
|
31
|
+
> これは・・・関数の定義ですか?それともマクロですか? 融合しているような・・・
|
32
|
+
|
33
|
+
> よく見ると可変長関数ですかね? 関数内部では可変長用の処理が行われていないような・・・
|
31
34
|
|
32
35
|
|
36
|
+
|
37
|
+
可変長マクロ引数を伴う関数マクロ(function-like macro)の定義です。ここは2つのGCC独自拡張機能が使われています。
|
38
|
+
|
39
|
+
|
40
|
+
|
33
|
-
|
41
|
+
- 通常の`{ ~ }`ブロックは文(statement)になりますが
|
42
|
+
|
43
|
+
、`({ ~ })`は式(expression)として扱えます。詳細は[Statements and Declarations in Expressions](https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html)を参照ください。
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
- 可変長マクロ引数を`args...`で受け、マクロ定義本体では`args`で引数リストを展開します。詳細は[Variadic Macros](https://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html)を参照ください。
|
34
48
|
|
35
49
|
|
36
50
|
|