一、我们都知道OC语言是C语言的超集,是对C语言封装,使得拥有面向对象的特性。
二、有时候开发中需要查看OC代码的底层实现原理,只能通过查看底层C或C++代码,因此一些常用的转化命令需要掌握。
常用的OC->C++命令:
clang -rewrite-objc xxx(文件名,如main.m) -o xxx(目标文件名,如main.cpp)
例:
clang -rewrite-objc main.m -o main.cpp
改良:因为clang编译器在前端编译时,会根据具体的平台(windows、mac、linux),具体的架构(i386、armv7、arm64)进行编译,所以在转C++代码时可以增加参数,指定具体平台和架构,方便我们更精确查找阅读源码,减少无用信息。
命令:
xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m -o main-arm64.cpp
问题:如果提示“iphoneos no fuond”类似的错误,可以尝试指定具体的sdk名字,
//查看所有可用sdk
xcodebuild -showsdks
iOS SDKs:
iOS 13.7 -sdk iphoneos13.7
iOS Simulator SDKs:
Simulator - iOS 13.7 -sdk iphonesimulator13.7
macOS SDKs:
DriverKit 19.0 -sdk driverkit.macosx19.0
macOS 10.15 -sdk macosx10.15
tvOS SDKs:
tvOS 13.4 -sdk appletvos13.4
tvOS Simulator SDKs:
Simulator - tvOS 13.4 -sdk appletvsimulator13.4
watchOS SDKs:
watchOS 6.2 -sdk watchos6.2
watchOS Simulator SDKs:
Simulator - watchOS 6.2 -sdk watchsimulator6.2
因此,最终的命令: