macOS 自带了clang编译器。clang是Apple LLVM编译器的一个前端。
http://clang.llvm.org/ 给出了官方的解释:a C language family frontend for LLVM. Its goal is to create a new C, C++, Objective C and Objective C++ front-end for LLVM compiler.
macOS上查看clang版本,使用命名 clang -v 即可
在学习Objective-C语言特性的时候,可以借助clang转化生成之后的C/C++语言进行理解。比如OC中特别的block对象。
转换的方式,只要使用clang自带的命令即可。例如我打算转化文件blk.m中的如下oc代码:
#import<Foundation/Foundation.h>
int main(int argc, const char *argv[]) {
void (^blk)(void) = ^{printf("this is a block\n");};
blk();
return 0;
}
那么我们可以在终端中输入 clang -rewrite-objc blk.m
这样会在当前目录(通过pwd查看到)中,生成blk.cpp文件。-rewrite-objc 命令参数是将指定文件中的OC代码,rewrite成C++
这对于理解block的实现是很有帮助的。