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程序的编译链接的更多相关文章

  1. 14_传智播客iOS视频教程_OC的数据类型

    对比一下OC和C差别,首先第一个是数据类型. C语言的数据类型分哪几类?C语言有哪些数据类型? 基本数据类型当然还包括int的一些修饰符.像short.long.long long.unsigned. ...

  2. 15_传智播客iOS视频教程_OC语言完全兼容C语言

    OC支持C语言所有的运算符并且效果是一样的.C语言中所有的运算符OC都支持.这些所有的运算符OC当中全部都支持. 包括C语言的结构体.枚举全部都可以写在OC当中,没有任何问题,并且效果是一样的. 比如 ...

  3. 08_传智播客iOS视频教程_Foundation框架

    比如产生随机数.这个功能要你写吗?不用,因为苹果已经写好了.后面想开发一个ios程序,往界面上放一个按钮,实际上这个按钮不用你写别人已经写好了,你就拿过来拖一下就可以了. 框架是1个功能集 苹果或者第 ...

  4. 11_传智播客iOS视频教程_NS前缀和@符号

    NS前缀的有NSLog和NSString Cocoa就是用来开发带界面的应用程序. Foundation框架之中的类.函数绝大多数都是从NextStep来的.看到NS前缀就知道这个类是从哪里来的.是很 ...

  5. 12_传智播客iOS视频教程_注释和函数的定义和调用

    OC的注释和C语言的注释一模一样.它也分单行注释和多行注释. OC程序里面当然可以定义一个函数.并且定义的方式方法和调用的方式方法和我们C语言是一模一样的.OC有什么好学的?一样还学个什么呢? 重点是 ...

  6. 10_传智播客iOS视频教程_NSString

    从今天开始不会再去用C语言当中的字符串.因为OC当中设计了一种更为好用的存储字符串的变量. C的字符串和OC的字符串是有区别的. NSString类型的指针变量,只能存储OC字符串的地址.第一步是声明 ...

  7. 09_传智播客iOS视频教程_自动释放池与NSLog函数

    不要管什么是自动释放池,现在给你讲你也听不懂.就业班才讲,不要知道太多,知道太多对你不好.电影里面死的最惨的人就是知道最多的人.把代码写到自动释放池里面就可以了.NSLog是printf的增强版,它增 ...

  8. 07_传智播客iOS视频教程_#import指令

    mac切换中英文输入法默认是Ctrl+空格键. 预处理指令的执行时机是在编译之前.在编译之前执行预处理指令. #import指令是包含文件,将指定的文件的内容在预编译的时候拷贝到写指令的地方. #im ...

  9. 06_传智播客iOS视频教程_源文件后缀名和main函数

    OC与C语言的不同. 把OC程序运行起来,CPU只会找main函数.并且只会执行main函数当中的代码.当main函数的代码执行完毕之后这个程序就自动结束掉了. main函数的参数是可以让我们在运行程 ...

随机推荐

  1. Bzoj 2726 SDOI 任务安排

      Memory Limit: 131072KB   64bit IO Format: %lld & %llu Description 机器上有N个需要处理的任务,它们构成了一个序列.这些任务 ...

  2. BZOJ3408: [Usaco2009 Oct]Heat Wave 热浪

    最短路模板.选迪杰. #include<stdio.h> #include<string.h> #include<stdlib.h> #include<alg ...

  3. 快速让你明白Objective-C的语法(和Java、C++对比)

    很多想开发iOS,或者正在开发iOS的程序员以前都做过Java或者C++,当第一次看到Objective-C的代码时都会头疼,Objective-C的代码在语法上和Java, C++有着很大的区别,有 ...

  4. Spring MVC中 log4j日志文件配置相对路径

    log4j和web.xml配置webAppRootKey 的问题 1 在web.xml配置 <context-param>  <param-name>webAppRootKey ...

  5. HDU 4786 Fibonacci Tree(生成树,YY乱搞)

    http://acm.hdu.edu.cn/showproblem.php? pid=4786 Fibonacci Tree Time Limit: 4000/2000 MS (Java/Others ...

  6. html5摇一摇代码优化

    首先对DeviceMotionEvent进行优化: 去除没用的代码,又一次封装DeviceMotionEven if(window.DeviceMotionEvent) { var speed = 2 ...

  7. LoadRunner 事务响应时间的组成

    事务时间 一个事务的时间是指持续时间,事务会完全记录下从事务开始到事务结束之间的时间差,那么事务的时间能真实地反映业务操作的时间吗?不能,就好像人用手按秒表来记录短跑时间一样,得出的时间并不是完全准确 ...

  8. C++11,控制台输出的一段小程序。

    #include <iostream> // std::cout, std::boolalpha, std::noboolalpha int main () { bool b = true ...

  9. OpenCV基本图像容器Mat的几种创建方法

    參考文章:http://www.cnblogs.com/tornadomeet/archive/2012/07/19/2599376.html 实验说明: (引用) 本文主要讲一些opencv 2.0 ...

  10. (八)unity4.6Ugui中文教程文档-------概要-UGUI Rich Text

    大家好,我是孙广东. 转载请注明出处:http://write.blog.csdn.net/postedit/38922399 更全的内容请看我的游戏蛮牛地址:mod=guide&view ...