0
私はGCCネストされた関数をclangに移植しようとしています。 gccのネストされた関数はclangではサポートされていないので、代わりにc-blockを使う必要があります。Clang Cブロック:呼び出し後のブロック関数定義
しかし、私はそれを呼び出した後にブロック定義をしたいです。だから、gccので、私は、この擬似コードを持って
(コードがMACROから生成され、私はこの順序を手配することができないので、私はこの順序が必要):
foo(){
auto void bar (void);
...
bar()
...
void bar(void) {
...some stuff
}
}
私はCブロック打ち鳴らす機能でこれを行うことができます?
このコードは
int main() {
void (^hello)(void);
hello = ^(void){
printf("Hello, block!\n");
};
hello();
return 0;
}
正常に動作します。しかし、次のコード
int main() {
void (^hello)(void);
hello();
hello = ^(void){
printf("Hello, block!\n");
};
return 0;
}
は、セグメンテーション違反で失敗しました。
[Cの移植可能なネストされた関数](http://stackoverflow.com/questions/12214867/portable-nested-functions-in-c)または[Clangの入れ子関数を持つGCCクリーンアップマクロの書き換え?]( http://stackoverflow.com/questions/24959440/rewrite-gcc-cleanup-macro-with-nested-function-for-clang) – Stargateur