→ OPIV: 原來 comma 在這裡是 separator 而不是 operator… 11/27 05:16
→ OPIV: 這樣就沒問題了 11/27 05:16
→ OPIV: 再請問,如果 typedef int fun(int); 11/27 06:25
→ OPIV: 那麼我可以用 fun 來定義函數嗎?像是 fun foo(a) { return 11/27 06:26
→ OPIV: a * 5; } 之類的?還是只能宣告? 11/27 06:26
→ johnjohnlin: stackoverflow 好像說只能拿來宣告 11/27 15:05
推 littleshan: typedef後當然可以作為函式宣告的一部份 11/28 22:31
→ littleshan: 但是 C 的 function 本體沒辦法 pass by value 11/28 22:31
→ littleshan: 所以你得寫成 fun* foo(a) { ... } 11/28 22:32
推 suhorng: @littleshan: 我以為原 PO 想問的是能不能寫類似 11/29 00:22
→ suhorng: let foo : fun = λ a → .... 之類的東西, 用 fun 來 11/29 00:22
→ OPIV: 我是想要用 fun 做 foo 的原型沒錯,好像真的沒辦法這麼做 11/29 16:03
推 littleshan: C沒有function literal呀 11/29 23:31
推 FRAXIS: 那我問一個類似的 int a = 5, b = a; 11/30 15:09
→ FRAXIS: 如果 comma 只是 separator 這樣 b 的初始化是合法的嗎? 11/30 15:09
推 LPH66: 合法; 標準規定 T x, y, z; 等同於 T x; T y; T z; 11/30 21:15
→ LPH66: 其中上一行的 x y z 包含 名字/*/&/.../[]/初始化 等等 11/30 21:16
→ LPH66: 語法上 x y z 表示的這一團叫做 init-declarator 11/30 21:16
推 FRAXIS: 感謝 那再問一個不相關的 i = sizeof(i++); 11/30 21:21
→ FRAXIS: 是 undefined behavior 嗎? 11/30 21:21
→ LPH66: sizeof 不運算其參數, 所以不是 11/30 23:18
→ OPIV: 那如果是 function parameter list 呢? 12/01 01:50
→ OPIV: 這樣是合法的嗎? 12/01 01:51
→ OPIV: void foo(int a, int b, int array[a][b][]); 12/01 01:51