代码之家  ›  专栏  ›  技术社区  ›  amo

“^”标记前的语法错误

  •  2
  • amo  · 技术社区  · 15 年前

    It seems that I'm not alone ,但目前还没有人公布这个问题的解决方案。

    举个例子:

    此代码来自UIView.h

    + (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_0);
    

    给出编译错误“Syntax error before'^'token”:

    /var/folders/UO/UOZJs7XuF5iROp2HMSTlz++++TI/-Caches-/com.apple.Xcode.501/CompositeSDKs/iphonesimulator-iPhoneSimulator4.0-drysryiarqddqccmfooifrjfbivi/System/Library/Frameworks/UIKit.framework/Headers/UIView.h:250:0 Syntax error before '^' token in /var/folders/UO/UOZJs7XuF5iROp2HMSTlz++++TI/-Caches-/com.apple.Xcode.501/CompositeSDKs/iphonesimulator-iPhoneSimulator4.0-drysryiarqddqccmfooifrjfbivi/System/Library/Frameworks/UIKit.framework/Headers/UIView.h
    

    它认为解决方案与构建设置有关。什么会导致这个错误?我不熟悉Objective-C中的(^)语法。

    1 回复  |  直到 14 年前
        1
  •  11
  •   mbauman    14 年前

    这个 ^ 在这种情况下,苹果实施了 blocks

    我的第一个猜测是,您试图用GCC4.0编译库,GCC4.0无法识别语法。也许可以尝试将编译器设置更改为GCC(或LLVM-GCC)4.2。

    另一个与编译器相关的选项可能会有所帮助,那就是将编译器完全从GCC中移除。如果Clang在编译方面也有问题,那么它很可能会向您显示更好的错误消息。