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函数的参数是可以让我们在运行程 ...
随机推荐
- rest-assured(一)报错解决方案
1.javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? --------1.端口设置错误 ----- ...
- ie6 js报错汇总
假如ie6是一个非美女的人,那不知道为多少人乱刀砍多少次,假如不幸它是一个美女,那不知道要被多少人轮奸完之后还是乱刀砍死. ie6的js的错误说明总是很隐晦的,它喜欢和捉迷藏.报的行数和错误,常常不知 ...
- Android菜单
Android菜单概述 菜单是Activity的一个重要组成部分,它为用户操作提供了快捷的途径.Android提供了一个简单的框架来向程序中添加标准菜单 . 一.创建一个菜单资源 你需要在一个XML ...
- 某考试 T1 arg
题目描述 给出一个长度为 m 的序列 A, 请你求出有多少种 1...n 的排列, 满足 A 是它的一个 LIS. 输入格式 第一行两个整数 n, m. 接下来一行 m 个整数, 表示 A. 输出格式 ...
- loj6158 A+B Problem (扩展KMP)
题目: https://loj.ac/problem/6158 分析: 先把S串逆置,就是从低位向高位看 我们再弄个T串,S串前面有x个连续的0,那么T串前面也有x个连续的0 第x+1位,满足S[x+ ...
- sql 2005 安装
http://blog.csdn.net/wochuailimin/article/details/6120462 http://www.cnblogs.com/huangcong/archive/2 ...
- topcoder srm 610
div1 250pt: 题意:100*100的01矩阵,找出来面积最大的“类似国际象棋棋盘”的子矩阵. 解法:枚举矩阵宽(水平方向)的起点和终点,然后利用尺取法来找到每个固定宽度下的最大矩阵,不断更新 ...
- 简述HashMap和Hashtable的差别
1.HashMap继承AbstractMap类. Hashtable继承了Dictionary类. 2.HashMap同意有null的键和值. Hashtable不同意有null的键和值. ...
- Highcharts:X轴分组堆叠图
在设计一个项目中的数据展示页面时.想要设计双X轴,一个轴显示须要的项.一个轴对这些项进行分组.效果如图: Highcharts自带双X轴展示方式.可是效果不是太理想.调整起来也会麻烦些 看到Highc ...
- 各种“GND”
资料来自网上,把个人觉得靠谱的摘取下来 1.地分类: a)直流地:直流电路“地”,零电位参考点: b)交流地:交流电的零线.要与地线区别开,不过,有时候拉电入户之前会把地线和零线接在一起: c)功率地 ...