自動でObjCブロックを宣言できますか?
auto fun = ^(int x) { NSLog(@"%d", x); }
fun(5);
そのための有効な構文を理解できません。
自動でObjCブロックを宣言できますか?
auto fun = ^(int x) { NSLog(@"%d", x); }
fun(5);
そのための有効な構文を理解できません。
;
の宣言の後にがありませんfun
。それ以外の場合は、構文が正しく、Clangは-std=c++11 -fblocks
C++またはObjective-C++入力のモードでそれを受け入れます。(ブロックは実際にはObjective-Cの一部ではない直交拡張であることに注意してください。)
C ++ /Objective-C++のautoキーワードがobjective-Cで使用されているとは思いません。
あなたの例のブロック変数の宣言に関しては、以下はObjective-Cで機能します
void(^fun)(int x) = ^(int x) {
NSLog(@"%d",x);
};
fun(5);
ブロックのその他の宣言オプションについては、ここに非常に良い答えがあります
autoキーワードはc++11キーワードです。Objective-cはc++ではなくcのスーパーセットであるため、c ++のプロパティではなく、cが含まれています。Objective-c ++に関しては、特にobjective-c ++をビルドするコンパイラーでは、clangがすべての新しいc++11機能について最新であるとは思いません。お役に立てれば!