09/12/18 20:46:16
>736
一通り読んだがC89やC99の規格に準拠したコードになっていない
詰まるところ文(Statement)を式(Expression)にできれば良いわけだがカンマ演算子やビット積、論理積などで式を繋げていくこともできる
また、(void)式(正しい呼び方は知らないが、VOID式とでも呼ぼうか)をif()の中で使いことができるようにするためにVOID式とスカラをカンマ演算して繋げてif ( VOID式, スカラ )のようにすれば良い
こうすることで戻り値がvoidな関数を呼び出すことができる
具体的には
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 void
5 foo(
6 int *x
7 ) {
8 if ( (*x = 10) ) {}
9 }
10
11 int
12 main(
13 int c,
14 char **v
15 ) {
16 if ( foo(&c), printf("%d\n", c) ) {}
17 if ( exit(0), 1) {}
18 }
のようになる
cf:スレリンク(tech板:25-26番)