用Visual Studio将Objective-C编译为C++

简介:

编译器支持

谷歌和苹果公司都使用Clang作为它们的C++前端。为了使他们的代码运行在Windows上,微软不得不将Visual C++的后端C2和Clang结合起来。

(Clang是一个C语言、C++、Objective-C、Objective-C++语言的轻量级编译器,源代码发布于BSD协议下。译者注)

IDE支持

在Visual Studio中Objective-C具有语法高亮、代码完成和调试支持等功能。C++和C#文件可以包含在同一个项目中,允许程序来直接跨区域进行调用。编译器将处理所有的细节所以开发者只是看到正常的函数调用的封装处理。

大多数Objective-C项目都作为XCode项目而开始,所以Visual Studio提供了导入该项目类型的能力。VS和XCode项目文件可以存在于同一个项目中,这样你就可以在两种IDE对同一个项目进行开发。

混合模式项目

Windows提供了新的API给Objective-C,例如动态磁贴。为了确保代码可以继续在这两个平台之间共享,微软提供运行时检查来查看Windows API是否可以给很好的调用。或者,你可以使用预处理器指令从共享的代码中将特定平台的代码隔离出来。

运行时行为

默认情况下Windows下的Objective-C运行库检测到应用程序的原始平台来确定它的行为。例如,如果你提供一个iPhone应用程序然后它将默认在一个狭窄的窗口中运行,而iPad应用程序运行在一个正常的窗口中。

所有这些行为可由应用程序在需要时进行重写。

iOS API 兼容性

Windows 10支持iOS API的子集。它不会跟踪特定版本的iOS,但相反在标准中查看哪些APIs经常被使用。对于第一个版本,微软主要关注的APIs包括如下:

游戏:OpenGL,OpenAL以及传感器
UI:UIKit,CooreAnimation,CoreGraphics,CoreText,Touch
Objective-C:ARC,Blocks,Foundation

一些类如共享、通知和StoreKit的特性,开发者需要在保留iOS APIs以及使用Windows的替代方案之间进行选择。如果你选择保留iOS APIs,Windows将会提供一个兼容性层,这样的APIs将能够开始运作。而选择Windows的替代方案的好处在于你可以使用Windows的高级功能。

Swift

微软对于Swift的官方立场是“此时不做评论”。大概也就是说他们想要支持Swift但是目前太忙了,还要继续为Objective-C做准备,而秋天也许会宣布关于Swift的消息。



感谢您的访问,希望对您有所帮助。 欢迎大家关注、收藏以及评论。


为使本文得到斧正和提问,转载请注明出处:
http://blog.csdn.net/nomasp


目录
相关文章
|
8天前
|
自然语言处理 编译器 Linux
|
13天前
|
自然语言处理 编译器 Linux
告别头文件,编译效率提升 42%!C++ Modules 实战解析 | 干货推荐
本文中,阿里云智能集团开发工程师李泽政以 Alinux 为操作环境,讲解模块相比传统头文件有哪些优势,并通过若干个例子,学习如何组织一个 C++ 模块工程并使用模块封装第三方库或是改造现有的项目。
|
1月前
|
存储 程序员 编译器
简述 C、C++程序编译的内存分配情况
在C和C++程序编译过程中,内存被划分为几个区域进行分配:代码区存储常量和执行指令;全局/静态变量区存放全局变量及静态变量;栈区管理函数参数、局部变量等;堆区则用于动态分配内存,由程序员控制释放,共同支撑着程序运行时的数据存储与处理需求。
90 21
|
1月前
|
Linux 编译器 C语言
Linux c/c++之多文档编译
这篇文章介绍了在Linux操作系统下使用gcc编译器进行C/C++多文件编译的方法和步骤。
36 0
Linux c/c++之多文档编译
|
1月前
|
算法 编译器 C++
【C++篇】领略模板编程的进阶之美:参数巧思与编译的智慧
【C++篇】领略模板编程的进阶之美:参数巧思与编译的智慧
75 2
|
2月前
|
C++ 内存技术
[转]Visual C++内嵌swf文件并播放
[转]Visual C++内嵌swf文件并播放
|
3月前
|
安全 编译器 C++
Microsoft Visual C++ Redistributable的作用主要体现以及可以删除吗?
这些是Microsoft Visual C++不同版本的Redistributable安装包,用于32位系统,确保相关应用正常运行。它们提供C++运行时环境,简化部署流程,支持第三方库及框架,并确保应用兼容性。定期更新可修复问题并引入新功能。在空间有限或需解决程序冲突时可考虑删除,但需谨慎操作以防影响应用稳定性和兼容性。删除前请确认无应用依赖,并通过控制面板安全卸载。
143 1
Microsoft Visual C++ Redistributable的作用主要体现以及可以删除吗?
|
3月前
|
缓存 C++ Windows
Inno setup 脚本判断 Microsoft Visual C++ Redistributable 不同版本区别
Inno setup 脚本判断 Microsoft Visual C++ Redistributable 不同版本区别
|
23天前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
21 4
|
23天前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
20 4