アカウント名:
パスワード:
この例ではあまりに簡単すぎて有用性が分かりにくいのですが
という場合には便利
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
「科学者は100%安全だと保証できないものは動かしてはならない」、科学者「えっ」、プログラマ「えっ」
Linux版は (スコア:1)
しかし、「幅広gcc拡張子サポート」って……
原文は"wider gcc extention support"とかなんとかだと思いますが。
Re:Linux版は (スコア:0)
「より広範なGCCの拡張をサポート」
ってことですか?
#内容はよくわかんないのでAC
gccの拡張 (スコア:2, 参考になる)
こんなネストした関数も動きます。
intel のコンパイラではサポートしてなさそうですが(^^;
#include <stdio.h>
typedef int int2int(int);
int g(int b, int2int* padd) {
return (*padd)(b);
}
int f(int a, int b) {
int add(int n) {
return n+a;
}
return g(b, add);
}
int main(void) {
Re:gccの拡張 (スコア:2, すばらしい洞察)
Re:gccの拡張 (スコア:1)
この例ではあまりに簡単すぎて有用性が分かりにくいのですが
という場合には便利
Re:gccの拡張 (スコア:1)
この例の肝は、ネストされた関数addが親スコープの変数aの値を
参照しているということだったりします。
closure もどきなんですよね。(外には返せないので別物ですが)
実際に吐かれるコードを見ると、動的にラッパ関数を生成して
親スコープのスタックフレームへのポインタを関数に渡しています。