Objective-C/C++混编编译器设置
如果你在Xcode中编写的工程中既有Objective-C代码,又有C++代码,在没有任何设置编译器选项的默认情况下,你将会发现一下问题:
(1)编译器报错。莫名其妙的错误,如C++的关键字(如virtual, new, delete等)找不到,不能解析啊等问题
(2)以*.cpp结尾的纯C++代码编译没有问题,但是既有Objective-c又有C++的文件(*.mm)文件就会报各种问题
在Xcode中,通常,Objective-c的后缀名位 .h/.m,C语言的后缀名为 .h/.c, C++的后缀名为.h/.cpp, 当一个文件中既有objective-c又有C++代码时,后缀名为 .h/.mm。在编写代码时要写对后缀名。其次,你可能发现,后缀名都写对了,代码也没有任何问题,编辑器也没有报错,为什么编译的时候就报错了呢?事实上,编译器和编辑器的工作是区分开来的,编辑器就是你写代码的地方,仅检查代码语法是否有错误,你语法没有错误当然不会报错了。编译器就是要编译运行在编辑器中编写好的代码,如果编辑器仅支持Objective-C,它怎么可能编译的了C++代码呢?
要让编译器知道代码中有C++代码,要对编译器做一些设置,先看图:
1.单击你的工程,选择TARGET下的目标文件
2.在选项卡中选择“Build Settings”选项
3.找到“Apple LLVM compiler x.x - Language”设置项(其中x.x为你的xcode默认的LLVM编译器版本,不同的xcode版本不一样)
4.图中绿色选中的选项“Compile Sources As”,意思是要把工程按照哪一种语言进行编译,默认是第一个“According to File Type”,将其改成Objective-C++即可。
现在重新编译一下你的工程是不是就可以成功编译了呢。
Objective-C/C++混编编译器设置的更多相关文章
- iOS开发——技术精华Swift篇&Swift 2.0和Objective-C2.0混编之第三方框架的使用
swift 语言是苹果公司在2014年的WWDC大会上发布的全新的编程语言.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.Swift语言采用安全编程模式,且引 ...
- Swift和Objective-C混编注意事项
前言 Swift已推出数年,与Objective-C相比Swift的语言机制及使用简易程度上更接地气,大大降低了iOS入门门槛.当然这对新入行的童鞋没来讲,的确算是福音,但对于整个iOS编程从业者来讲 ...
- iOS 里面 Swift与Objective-C混编,Swift与C++混编的一些比较
即使你尽量用Swift编写iOS程序,难免会遇到部分算法是用C++语言编写的.那你只能去问问”度娘“或“狗哥”怎么用Swift调用C++算法. 一,C,C++, Objective-C,S ...
- obeject-c 与 swift 混编
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 } p.p2 ...
- [ios][swift]swift混编
http://blog.csdn.net/iflychenyang/article/details/8876542(如何在Objective-C的头文件引用C++的头文件) 1.将.m文件扩展名改为. ...
- Swift和Objective-C混编注意
前言 Swift已推出数年,与Objective-C相比Swift的语言机制及使用简易程度上更接地气,大大降低了iOS入门门槛.当然这对新入行的童鞋们来讲,的确算是福音,但对于整个iOS编程从业者来讲 ...
- swift:Optional Type 、Swift和Objective-C混编的讲解
❤️❤️❤️swift中的Optional Type的?和!含义:其实就是一个装包和拆包的过程 optional的含义: Optional事实上是一个枚举类型,Optional包含None和Some两 ...
- iOS开发——路径篇&混编路径与全局宏路径
混编路径与全局宏路径 最近在做东西的时候有一个地方要用到一个第三方库的,但是目前swift版的还没有找到,自己又不想写(其实是不会写),所以就想到了混编,但是中间出现了好多问题,其中印象最深的就是桥接 ...
- OC和C语言的混编注意点和好处
苹果的Objective-C编译器批准用户在统一个源文件里自由地混杂利用C++和Objective-C,混编后的语言叫Objective-C++.有了它,你就能够在Objective-C利用过程中利用 ...
随机推荐
- HDU 5727.Necklace-二分图匹配匈牙利
好久没写过博客了,把以前的博客补一下. Necklace Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K ( ...
- USACO 4.1.1 麦香牛块 Beef McNuggets
题目大意 给你\(n\)个数\(a_1, a_2 ... a_n\), 要你求最大的正整数\(m\)使得方程\(a_1 x_1 + a_2 x_2 + ... + a_n x_n = m\)无非负整数 ...
- Jenkins里邮件插件触发器配置和Send to Developers到底是什么意思(转)
邮件触发类型介绍(Triggers) By default, the onlytrigger configured is the "Failure" trigger. To ad ...
- iOS 5 does not allow to store downloaded data in Documents directory? ios5.0及以后的版本对于下载的文件存储路径有了改变
I have made an application for my client by keeping target iOS as 4. But since the application still ...
- 不得不知Git远程操作详解
Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Gi ...
- 查看linux 系统 当前使用的网卡
使用ifconfig命令查看到linux 系统有三个网卡 ,其实我只要其中一个启用就可以了,用什么命令查看或者切换网卡,或者停用掉其他两个网卡? watch cat /proc/net/dev 看下哪 ...
- 修改Tomcat服务中的端口配置
1.修改Tomcat服务中的端口配置: 分别修改安装目录下的conf子目录中的server.xml文件(注意:两个文件中对应的端口号要不一样),修改如下 : a. 修改Shutdown端口(默认为80 ...
- [field:description /]标签如何限制字数?|DedeCms
[field:description /]标签如何限制字数? [field:description function='cn_substr(@me,80)'/]dede 里的所有标记都支持这样使用函数 ...
- ImportError: cannot import name patterns
The use of patterns is deprecated in Django1.10. Therefore do not import 'patterns' and your url pat ...
- unity3D中使用Socket进行数据通信(一)
公司今年3D产品的工作中心主要集中在提高产品深度上,通过对竞争产品的分析,发现我们的缺陷在于多人在线与后台管理部分,多人在线使用unity自带的Network能够搞定,后台部分前段时间主要研究了下Sq ...