初學(xué)可以以命令行編譯運(yùn)行單個(gè)文件的方式開(kāi)始
入口函數(shù) main()方法雅潭。
.c 文件為c語(yǔ)言文件膘怕, .m文件為oc文件
可以混合編譯
C語(yǔ)言示例
// C語(yǔ)言庫(kù) 頭文件導(dǎo)入
#include <stdio.h>
// 自定義頭文件導(dǎo)入
#include "test.h"
int main() { //入口函數(shù)
printf("***************\n");
printf("** hello ***\n");
printf("***************\n");
return 0;
}
OC文件示例
//區(qū)別于c語(yǔ)言導(dǎo)包的include
#import <Foundation/Foundation.h>
//類(lèi)定義否灾。注意一定要有父類(lèi)
@interface Car : NSObject
{
//訪(fǎng)問(wèn)權(quán)限。默認(rèn)是protect
@public
//成員變量聲明一定要在大空號(hào)內(nèi)部
int wheels;
int speed;
}
//方法聲明 ‘-’ 開(kāi)始她君,小括號(hào)用于類(lèi)型聲明
- (void)paint;
@end //聲明結(jié)束,和@interface成對(duì)出現(xiàn) 不能嵌套
//類(lèi)實(shí)現(xiàn)警没,注意不寫(xiě)父類(lèi)
@implementation Car
//方法實(shí)現(xiàn)
- (void)paint {
//對(duì)象都用指針表示匈辱, 所以訪(fǎng)問(wèn)使用->
NSLog(@"Car wheels=%d, speed=%d", self->wheels, self->speed);
}
//C語(yǔ)言方法可以出現(xiàn)在除了類(lèi)聲明的之外的任意位置
void test1(Car* car) {
[car paint];
}
@end //實(shí)現(xiàn)結(jié)束。其內(nèi)部其實(shí)可以包含C語(yǔ)言方法
//C語(yǔ)言方法可以出現(xiàn)在除了類(lèi)聲明的之外的任意位置
void test(Car* car) {
//OC方法調(diào)用杀迹,使用中括號(hào)包裹
[car paint];
}
//程序入口
int main()
{
//OC對(duì)象初始化
Car *car = [Car new];
//通過(guò)指針訪(fǎng)問(wèn)成員
car->wheels = 4;
car->speed = 120;
test(car);
}
編譯文件
cc -c file.m -framework Foundation
- -c 表示編譯
- file.m表示目標(biāo)文件梅誓,可以列舉多個(gè),也可以用通配符表示*.m
- -framework 之后列舉所用到的標(biāo)準(zhǔn)庫(kù)
執(zhí)行之后會(huì)在當(dāng)前目錄生成 file.o文件佛南。
cc file.o -framework Foundation
運(yùn)行以上命令,鏈接程序嵌言,會(huì)生成a.out可執(zhí)行文件
當(dāng)然也可以用 -o 參數(shù)指定輸出文件名
運(yùn)行可執(zhí)行文件
./a.out
編譯和鏈接合一
cc file.m -framework Foundation
運(yùn)行以上命令會(huì)直接生成a.out可執(zhí)行文件