多数c语言的初学者对c工程开发过程各个阶段的作用理解不到位,而这方面的的知识又是实际开发过程中经常用到的技能点,所以就成为面试考察中一个重要的考察方面。例如:头文件的作用、头文件的内容;链接的作用和意义;条件编译的作用等等此类问题,接下来将c工程开发过程中的各种问题进行总结使大家能够自如应对这方面的面试题目。
  c工程开发经过以下几个阶段:
  编辑--》预处理--》编译--》汇编--》链接--》运行--》调试

一、编辑阶段
   根据自己需要选择合适的程序编辑器。
   优秀的程序编辑器应该具备功能包括:支持多种编程语言、语法高亮显示、智能提醒、自动补全、自动注释等多种功能。
    vim是一款很优秀的程序编辑器,最大特点:是一款可自由配置和定制编辑器

二、预处理阶段
  主要是包括技术点:文件包含、宏定义和条件编译,该阶段的知识点在工程开发中占有重要的位置,因此成为企业面试重点考察技术点,初学者由于没有工程经验对该阶段的知识点往往不清楚,针对三个知识点进行以下总结:

本节主要讲解“文件包含”的概念和作用。
在编写c语言程序中,文件的开头部分用#include语句包含一个相关的.h文件,该文件究竟有什么作用,文件中内容是什么,多数的初学者由于开发经验不足,对此部分的概念不清楚。接下来针对以上问题进行讨论:
1、文件包含的形式:
#include <xxx.h>
#include "yyy.h"

#include <linux/inet.h>
#include "header/funcs.h"
以下的形式较少采用,采用了绝地路径,使程序不具有可移植性
#include </home/usb/stdusb.h>

文件包含语句的作用:根据名字寻找头文件,用头文件内容替换#include语句,<>和""搜索的位置不一样,
<>包含头文件是编译器默认的头文件搜索路径下寻找,“”包含的头文件是当前目录和
编译器默认的头文件搜索路径。
2、函数调用之前需要声明才能调用
文件a中定义的函数,需要在文件b中使用,则需要在文件b开头部分进行声明
为了在调用函数的过程中方便函数的声明所以进入了头文件
头文件内容:函数的声明和函数所依赖的结构体声明。在调用第三库方函数、系统库函数、项目组中其他人编写的
的函数时,仅需要用#include语句包含指定的头文件即完成了声明。项目开发时要求编写.c文件的同时必须要编
写.h文件,以方便他人使用。

3、头文件的书写格式:
例:
头文件:network.h
#ifndef _NETWORK_H_
#define _NETWORK_H_
头文件内容
#endif
一般格式是这样的:
   #ifndef <标识>
   #define <标识>
  
   ......
   ......
  
   #endif
  
<标识>在理论上来说可以是自由命名的,但每个头文件的这个“标识”都应该是唯一的。
标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线,如:stdio.h
  #ifndef _STDIO_H_
  #define _STDIO_H_
  
  ......
  
  #endif

4、开发过程中经常会遇到预处理过程中因为找不到头文件而终止的情况,如果是IDE就要查询是否头文件已经
导入到了执行目录下,如果用命令行的编译器gcc,则可以在编译的过程中指明头文件的搜索路径,
所用参数-I:指明本次编译头文件搜索路径,如果头文件不在编译器默认搜索路径下,也不在当前目录下。
特别是在使用第三方库的时候,要确保所需要的头文件在正确的位置。

  

    

c/c++面试----c工程开发之头文件的更多相关文章

  1. c c++面试----c工程开发之链接

    多数c语言的初学者对c工程开发过程各个阶段的作用理解不到位,而这方面的的知识又是实际开发过程中经常用到的技能点,所以就成为面试考察中一个重要的考察方面.例如:头文件的作用.头文件的内容:链接的作用和意 ...

  2. c c++面试c工程开发之宏定义和条件编译

    多数c语言的初学者对c工程开发过程各个阶段的作用理解不到位,而这方面的的知识又是实际开发过程中经常用到的技能点,所以就成为面试考察中一个重要的考察方面.例如:头文件的作用.头文件的内容:链接的作用和意 ...

  3. Linux驱动开发常用头文件

    头文件目录中总共有32个.h头文件.其中主目录下有13个,asm子目录中有4个,linux子目录中有10个,sys子目录中有5个.这些头文件各自的功能如下: 1.主目录 <a.out.h> ...

  4. 在工程名.h头文件中写public:

    class CaccessimageApp : public CWinApp { public: _ConnectionPtr m_pConnection; CaccessimageApp(); // ...

  5. Qt工程pro文件的简单配置(尤其是第三方头文件和库)

    Qt开发中,pro文件是对正工程所有源码.编译.资源.目录等的全方位配置的唯一方式,pro文件的编写非常重要,以下对几个重要项进行说明(win和linux,mac平台通用配置) 注释 以”#”开始的行 ...

  6. include包含头文件的语句中,双引号和尖括号的区别

    include包含头文件的语句中,双引号和尖括号的区别   #include <>格式:引用标准库头文件,编译器从标准库目录开始搜索 #incluce ""格式:引用非 ...

  7. 引用其他头文件时出现这种错误,莫名其妙,error C2065: “ColorMatrix”: 未声明的标识符

    今天做项目时,直接拷贝了另一个工程里的头文件和源文件,然后运行时就出现这种问题,莫名其妙,在原程序里运行一点问题就没有,但是在新工程里就是error. >e:\c++\button_fly2\b ...

  8. App开发流程之通用宏定义及头文件

    工欲善其事,必先利其器. 在正式实现各种炫酷的功能和UI前,做好准备工作是提高后续开发效率的必经之路. 所以,这个系列,我不是在各种堆技术,更关注的是“兵马动”之前的“粮草行”,有些繁琐,但当清晰理出 ...

  9. ubuntu下整合eclipse和javah生成jni头文件开发android的native程序

    0:前言: 这两天一直在研究用android的jni调用第三方库,上网搜方法,但是都是泛泛而谈,没有demo,经过我几番折磨,写了n多的helloword工程,总是不成功,工程名字也就由helloow ...

随机推荐

  1. ubuntu 下查找某个文件的方法

    1.whereis 文件名 特点:快速,但是是模糊查找,例如 找 #whereis mysql 它会把mysql,mysql.ini,mysql.*所在的目录都找出来. 2.find / -name  ...

  2. Facade模式实现文件上传(Flash+HTML5)

    一.前言 确定了渐进式增强的上传方式,接下来我们需要将上传功能从具体的业务逻辑中剥离出来,作为公共组件供业务层调用.这就要求我们必须对业务层隐藏上传细节,只暴露统一的上传API.这时候大家是不是跟我一 ...

  3. -ms-zoom property

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. html-其他常见标签的使用

    b:加粗 s:删除线 u:下划线 i:斜体 per:原样输出 sup:上标 sub:下标 p:段落标签 比br多一行 (CSS) div:自动换行 span:在一行显示 完整代码: <html& ...

  5. python 读写Oracle10g数据简介

    1.测试环境: Centos6 X86_64python 2.6 Oracle 10g 2.安装cx_Oracle 和 Oracle InstantClient: http://www.rpmfind ...

  6. 【阿里云产品公测】简单粗暴30S完成PTS测试配置附tornado服务器测试结果

    作者:阿里云用户morenocjm [阿里云产品公测]简单粗暴 30S完成PTS测试配置(附tornado服务器测试结果) -------------------------------------- ...

  7. 在Android Studio上进行OpenCV 3.1开发环境配置

    开发环境: Windows 7 x 64 家庭版 Android Studio 1.5.1(Gradle版本2.8) JDK 1.8.0 Android 6.0(API 23) OpenCV 3.1. ...

  8. 【起航计划ObjC 002】印第安老斑鸠ObjC的幻想 ---- Ubuntu下安装并使用MAC虚拟机

    本文介绍如何在Ubuntu下安装Mac OS X Mavericks系统.具体如下: 1)安装前准备工作 下载Mac OS X Mavericks系统,地址:http://pan.baidu.com/ ...

  9. Unity 多个Android sdk 插件如何组织目录

    一般Android 插件放在 Assets/Plugins/Android/ 下, 但是一个项目可能要用到多个sdk , 比如既要用 阿里九游的sdk 又要用 share sdk 怎么办呢, 难道要只 ...

  10. 关于程序中使用servlet-api.jar和jsp-api.jar与服务器lib包jar包冲突的问题

    问题描述:         程序中使用到javax.servlet.http.HttpServletRequest等类内容,然而这些类是依赖于tomcat容器lib包下的jar包,工程中导入这两个ja ...