Objective-C 源码初探 __attribute__

 

 

#import <Foundation/Foundation.h>

//延迟执行,delayFunc函数即为延迟执行的函数
#define onExit\
    __strong void (^block)() __attribute__((cleanup(delayFunc),unused)) = ^

void delayFunc(__strong void (^*block)()){
    (*block)();
}

//在main函数执行之前执行的函数
__attribute__((constructor)) void ExecuteBefore_main(){
    printf("ExecuteBefore_main\n");
}

__attribute__((destructor)) void ExecuteAfter_main(){
    printf("ExecuteAfter_main\n");
}

//函数可用性
void functionDeprecatedAndObsoleteWarningAndError() __attribute__ ((availability(macosx,introduced=10.4,deprecated=10.10,obsoleted=10.13)));

void functionDeprecatedAndObsoleteWarningAndError(void){
    
}

//返回值未使用
int returnValueNotUnusedWarning() __attribute__ ((warn_unused_result));

int returnValueNotUnusedWarning(){
    return 1;
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        printf("Hello, World!\n");
        
        functionDeprecatedAndObsoleteWarningAndError();
        returnValueNotUnusedWarning();
        onExit{
            printf("onExit\n");
        };
    }
    return 0;
}

 

posted @ 2016-06-30 22:33  Ficow  阅读(299)  评论(0编辑  收藏  举报