.m 文件与.mm文件的区别

博客介绍了两种文件对应的编程语言,其中.m文件是object - c文件,.mm文件相当于c++或者c文件,属于信息技术领域的知识。
部署运行你感兴趣的模型镜像

.m文件是object-c文件

.mm文件相当于c++或者c文件

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.9

TensorFlow-v2.9

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

在iOS和Objective - C开发中,.mm.h、.m文件有着不同的用途和特点,以下是它们的区别: ### 文件性质用途 - **.h文件**:头文件,主要用于声明类、方法、变量、常量等信息。它的作用是提供接口,让其他文件可以了解该类或模块的功能和使用方式。通常,.h文件会被其他文件通过`#import`指令引入,以使用其中声明的内容。例如,在一个名为`Person`的类中,`Person.h`文件会声明`Person`类的属性和方法: ```objc // Person.h @interface Person : NSObject @property (nonatomic, strong) NSString *name; - (void)sayHello; @end ``` - **.m文件**:实现文件,用于实现`.h`文件中声明的类和方法。它只能包含Objective - C和C代码,用于编写具体的业务逻辑。例如,`Person.m`文件会实现`Person`类的`sayHello`方法: ```objc // Person.m #import "Person.h" @implementation Person - (void)sayHello { NSLog(@"Hello, my name is %@", self.name); } @end ``` - **.mm文件**:同样是实现文件,和`.m`文件类似,但除了可以包含Objective - C和C代码以外,还可以包含C++代码。仅在Objective - C代码中确实需要使用C++类或者特性的时候才使用这种扩展名 [^2][^3]。例如,在一个需要使用C++ `std::vector`的Objective - C类中,可以使用`.mm`文件: ```objc // MyClass.mm #import "MyClass.h" #include <vector> @implementation MyClass - (void)useVector { std::vector<int> myVector; myVector.push_back(1); myVector.push_back(2); // 其他操作 } @end ``` ### 代码调用能力 - **.h文件**:本身不实现具体的功能,主要是提供声明,供其他文件引用和调用。它不能独立编译,需要和对应的`.m`或`.mm`文件一起编译。 - **.m文件**:只能调用纯Objective - C的类和方法,不能直接调用C++的类和方法。如果要调用混合了C++代码的模块,需要采用特定的方式,比如`.h`用Objective - C的方式声明,而具体实现用`.mm`的方式 [^1]。 - **.mm文件**:既可以调用Objective - C的类和方法,也可以调用C++的类和方法。在`.mm`文件中混用C++代码直接使用即可 [^4]。 ### 编译方面 - **.h文件**:不会单独编译,而是在引入它的`.m`或`.mm`文件编译时,其内容会被展开并参编译。 - **.m文件**:使用Objective - C编译器进行编译。 - **.mm文件**:使用支持Objective - C++的编译器进行编译,因为它包含了C++代码。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值