初学可以以命令行编译运行单个文件的方式开始
入口函数 main()方法。
.c 文件为c语言文件, .m文件为oc文件
可以混合编译
C语言示例
// C语言库 头文件导入
#include <stdio.h>
// 自定义头文件导入
#include "test.h"
int main() { //入口函数
printf("***************\n");
printf("** hello ***\n");
printf("***************\n");
return 0;
}
OC文件示例
//区别于c语言导包的include
#import <Foundation/Foundation.h>
//类定义。注意一定要有父类
@interface Car : NSObject
{
//访问权限。默认是protect
@public
//成员变量声明一定要在大空号内部
int wheels;
int speed;
}
//方法声明 ‘-’ 开始,小括号用于类型声明
- (void)paint;
@end //声明结束,和@interface成对出现 不能嵌套
//类实现,注意不写父类
@implementation Car
//方法实现
- (void)paint {
//对象都用指针表示, 所以访问使用->
NSLog(@"Car wheels=%d, speed=%d", self->wheels, self->speed);
}
//C语言方法可以出现在除了类声明的之外的任意位置
void test1(Car* car) {
[car paint];
}
@end //实现结束。其内部其实可以包含C语言方法
//C语言方法可以出现在除了类声明的之外的任意位置
void test(Car* car) {
//OC方法调用,使用中括号包裹
[car paint];
}
//程序入口
int main()
{
//OC对象初始化
Car *car = [Car new];
//通过指针访问成员
car->wheels = 4;
car->speed = 120;
test(car);
}
编译文件
cc -c file.m -framework Foundation
- -c 表示编译
- file.m表示目标文件,可以列举多个,也可以用通配符表示*.m
- -framework 之后列举所用到的标准库
执行之后会在当前目录生成 file.o文件。
cc file.o -framework Foundation
运行以上命令,链接程序,会生成a.out可执行文件
当然也可以用 -o 参数指定输出文件名
运行可执行文件
./a.out
编译和链接合一
cc file.m -framework Foundation
运行以上命令会直接生成a.out可执行文件