LoginSignup
3
3

More than 5 years have passed since last update.

clangの最適化でreturn文がないメソッドの返値が変わる

Last updated at Posted at 2012-09-07

最適化オプションで挙動が変わります。BOOL値を返すメソッドをオーバーライドしたときにreturn書き忘れてはまった…。

#import <Foundation/Foundation.h>

@interface Hoge : NSObject
@end

@implementation Hoge

+(BOOL)hoge {
    NSLog(@"Say hoge"); // 何か関数を呼ぶ
    // return 書き忘れる
}

@end

int main(int argc, const char * argv[])
{
    @autoreleasepool {

        NSLog(@"Return value: %d", [Hoge hoge]);
    }
    return 0;
}
  • None [-O0]
    • Return value: 0
  • Fastest, Smallest [-Os]
    • Return value: 51

-Osオプションだと最後に呼んだ関数の何かが返る。GCCでもこういうのあるんですかね。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3