13_传智播客iOS视频教程_OC程序的编译链接



C程序的编译、链接、执行怎么来的?在.C文件里面写上符合C语言部分的源代码。OC也是一样的.记住:OC程序的后缀名是.m.



















为什么要链接?第一个.o的目标文件里面它启动不了.因为它没有启动代码我们要加上启动代码,另外还要链接一些函数进去。

没有定义NSLog,a.out也没有出来.NSLog函数是Foundation框架之中的。如果你在OC程序当中使用到框架的类或者函数的话必须要告诉编译器这个类或者函数去哪里找。如果程序中使用到了框架中的函数或者类.那么在链接的时候,就必须要告诉编译器去哪1个框架中找这个函数或者类.因为框架有很多个。
NSLog函数是Foundation框架里面的,那么编译器在链接的时候找NSLog函数。框架有那么多,去哪个框架找?所以必须要得告诉编译器。怎么告诉它?在编译的时候、在链接的时候


OC程序的编译、链接、执行和C程序唯一的区别是在于链接的时候。如果你的程序用到了框架当中的功能,你在链接的时候必须要告诉它去哪个框架里面找。
去链接这个main.o的时候 以前说过链接做的事情其中之一就是要找函数。去哪里找函数呢?去这个Foundation框架里面找。
/*
1.OC程序的编译、链接、执行. 1). 在.m文件中写上复合OC语法规范的源代码. 2). 使用编译器将源代码编译为目标文件. cc -c xx.m a. 预处理
b. 检查语法
c. 编译. 3).链接 cc xx.o 如果程序中使用到了框架中的函数或者类.那么在链接的时候,就必须要告诉编译器去哪1个框架中找这个函数或者类. cc xx.o -framework 框架名称. cc main.o -framework Foundation 程序中用到了哪1个框架中的功能 那么就在这个地方告诉编译器. 4) 链接成功以后 就会生成1个a.out可执行文件 执行就可以了. 2、 我们1点击运行按钮 所有的事情Xcode就帮助我们自动做了. */ #include <stdio.h> int main(int argc, const char * argv[]) {
// insert code here...
printf("Hello, World!\n");
return ;
}
/** 写上符合OC语法规范的源代码. */
#import <Foundation/Foundation.h> //引入Foundation框架里面的Foundation.h头文件. int main(){ NSLog(@"哈哈哈哈哈哈哈哈哈哈");
return ;
}
13_传智播客iOS视频教程_OC程序的编译链接的更多相关文章
- 14_传智播客iOS视频教程_OC的数据类型
对比一下OC和C差别,首先第一个是数据类型. C语言的数据类型分哪几类?C语言有哪些数据类型? 基本数据类型当然还包括int的一些修饰符.像short.long.long long.unsigned. ...
- 15_传智播客iOS视频教程_OC语言完全兼容C语言
OC支持C语言所有的运算符并且效果是一样的.C语言中所有的运算符OC都支持.这些所有的运算符OC当中全部都支持. 包括C语言的结构体.枚举全部都可以写在OC当中,没有任何问题,并且效果是一样的. 比如 ...
- 08_传智播客iOS视频教程_Foundation框架
比如产生随机数.这个功能要你写吗?不用,因为苹果已经写好了.后面想开发一个ios程序,往界面上放一个按钮,实际上这个按钮不用你写别人已经写好了,你就拿过来拖一下就可以了. 框架是1个功能集 苹果或者第 ...
- 11_传智播客iOS视频教程_NS前缀和@符号
NS前缀的有NSLog和NSString Cocoa就是用来开发带界面的应用程序. Foundation框架之中的类.函数绝大多数都是从NextStep来的.看到NS前缀就知道这个类是从哪里来的.是很 ...
- 12_传智播客iOS视频教程_注释和函数的定义和调用
OC的注释和C语言的注释一模一样.它也分单行注释和多行注释. OC程序里面当然可以定义一个函数.并且定义的方式方法和调用的方式方法和我们C语言是一模一样的.OC有什么好学的?一样还学个什么呢? 重点是 ...
- 10_传智播客iOS视频教程_NSString
从今天开始不会再去用C语言当中的字符串.因为OC当中设计了一种更为好用的存储字符串的变量. C的字符串和OC的字符串是有区别的. NSString类型的指针变量,只能存储OC字符串的地址.第一步是声明 ...
- 09_传智播客iOS视频教程_自动释放池与NSLog函数
不要管什么是自动释放池,现在给你讲你也听不懂.就业班才讲,不要知道太多,知道太多对你不好.电影里面死的最惨的人就是知道最多的人.把代码写到自动释放池里面就可以了.NSLog是printf的增强版,它增 ...
- 07_传智播客iOS视频教程_#import指令
mac切换中英文输入法默认是Ctrl+空格键. 预处理指令的执行时机是在编译之前.在编译之前执行预处理指令. #import指令是包含文件,将指定的文件的内容在预编译的时候拷贝到写指令的地方. #im ...
- 06_传智播客iOS视频教程_源文件后缀名和main函数
OC与C语言的不同. 把OC程序运行起来,CPU只会找main函数.并且只会执行main函数当中的代码.当main函数的代码执行完毕之后这个程序就自动结束掉了. main函数的参数是可以让我们在运行程 ...
随机推荐
- [USACO13NOV]空荡荡的摊位Empty Stalls
题目描述 Farmer John's new barn consists of a huge circle of N stalls (2 <= N <= 3,000,000), numbe ...
- 《TCP/IP详解卷1:协议》——第4章 ARP:地址解析协议(转载)
章节回顾: 1.引言 当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48 bit的以太网地址来确定目的接口的.设备驱动程序从不检查IP数据报中的目的IP地址.地址解析为这两种不同 ...
- Scrambled Polygon--poj2007(极角排序模板)
http://poj.org/problem?id=2007 #include<stdio.h> #include<math.h> #include<algorithm& ...
- Intersecting Lines--POJ1269(判断两条直线的关系 && 求两条直线的交点)
http://poj.org/problem?id=1269 我今天才知道原来标准的浮点输出用%.2f 并不是%.2lf 所以wa了好几次 题目大意: 就给你两个线段 然后求这两个线段所在的 ...
- POJ 1422【最小路覆盖数】
题意: 背景: 小镇有n个路口,空降兵可以在任意路口降落.有m条通往别的路口的单向边,但是不会出现循环. 问最少空降多少个士兵可以走完所有路口. 数据输入: 测试组数 t 每组有: 路口数 n 边数 ...
- poj 1695 Magazine Delivery 记忆化搜索
dp[a][b][c],表示三个人从小到大依次在a,b.c位置时.距离结束最少的时间. 每次选一个人走到c+1位置搜索就好了. 坑点在于不能floyd.预计题目没说清楚.意思就是假设没送Li,那么Li ...
- sdk manager 创建的虚拟机启动的时候总是在Android字样解决
一直显示Android字样.仅仅须要删除文件夹下的snapshots.img 找到sdk的文件夹下的\tools\lib\emulator,然后删除上面的文件snapshots.img就可以,我的sd ...
- POST & GET & Ajax 全解
GET&POST&Ajax 全解 一.POST和GET的差别 GET:GET方法提交数据不安全,数据置于请求行.客户段地址栏可见:GET方法提交的数据限制大小在255个字符之内.參数直 ...
- C# 中用DES 对称Key,IV 加密,前端crypto.js 解密
1.服务器端代码 #region ========加密======== /// <summary> /// 加密 /// </summary> /// <param na ...
- 【转载】TCP和TCP/IP的区别
TCP/IP协议(Transmission Control Protocol/Internet Protocol)叫做传输控制/网际协议, 又叫网络通讯协议,这个协议是Internet国际互联网络的基 ...