c/c++面试----c工程开发之头文件
多数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工程开发之头文件的更多相关文章
- c c++面试----c工程开发之链接
多数c语言的初学者对c工程开发过程各个阶段的作用理解不到位,而这方面的的知识又是实际开发过程中经常用到的技能点,所以就成为面试考察中一个重要的考察方面.例如:头文件的作用.头文件的内容:链接的作用和意 ...
- c c++面试c工程开发之宏定义和条件编译
多数c语言的初学者对c工程开发过程各个阶段的作用理解不到位,而这方面的的知识又是实际开发过程中经常用到的技能点,所以就成为面试考察中一个重要的考察方面.例如:头文件的作用.头文件的内容:链接的作用和意 ...
- Linux驱动开发常用头文件
头文件目录中总共有32个.h头文件.其中主目录下有13个,asm子目录中有4个,linux子目录中有10个,sys子目录中有5个.这些头文件各自的功能如下: 1.主目录 <a.out.h> ...
- 在工程名.h头文件中写public:
class CaccessimageApp : public CWinApp { public: _ConnectionPtr m_pConnection; CaccessimageApp(); // ...
- Qt工程pro文件的简单配置(尤其是第三方头文件和库)
Qt开发中,pro文件是对正工程所有源码.编译.资源.目录等的全方位配置的唯一方式,pro文件的编写非常重要,以下对几个重要项进行说明(win和linux,mac平台通用配置) 注释 以”#”开始的行 ...
- include包含头文件的语句中,双引号和尖括号的区别
include包含头文件的语句中,双引号和尖括号的区别 #include <>格式:引用标准库头文件,编译器从标准库目录开始搜索 #incluce ""格式:引用非 ...
- 引用其他头文件时出现这种错误,莫名其妙,error C2065: “ColorMatrix”: 未声明的标识符
今天做项目时,直接拷贝了另一个工程里的头文件和源文件,然后运行时就出现这种问题,莫名其妙,在原程序里运行一点问题就没有,但是在新工程里就是error. >e:\c++\button_fly2\b ...
- App开发流程之通用宏定义及头文件
工欲善其事,必先利其器. 在正式实现各种炫酷的功能和UI前,做好准备工作是提高后续开发效率的必经之路. 所以,这个系列,我不是在各种堆技术,更关注的是“兵马动”之前的“粮草行”,有些繁琐,但当清晰理出 ...
- ubuntu下整合eclipse和javah生成jni头文件开发android的native程序
0:前言: 这两天一直在研究用android的jni调用第三方库,上网搜方法,但是都是泛泛而谈,没有demo,经过我几番折磨,写了n多的helloword工程,总是不成功,工程名字也就由helloow ...
随机推荐
- 编程进阶:Java小白的序列化Serializable接口
在之前的学习过程中,我们知道了如何使用FileInputStream输入流和FileOutputStream输出流编写程序读写文件. 下面我们来学习一下如何使用序列化和反序列化读写文件. 一.序列化 ...
- C/C++中的auto关键词
C语言 auto被解释为一个自动存储变量的关键字,也就是申明一块临时的变量内存. 例如: auto double a=3.7; 表示a为一个自动存储的临时变量. C++语言 C++ 98标准/C++0 ...
- Portals
Portals Portals 提供了一种很好的将子节点渲染到父组件以外的 DOM 节点的方式. const appRoot = document.getElementById('app-root') ...
- mockito 初识
转载:http://blog.csdn.net/zhoudaxia/article/details/33056093 在平时的开发工作中,经常会碰到开发进度不一致,导致你要调用的接口还没好,此时又需要 ...
- 函数进阶3 —— 生成器、yield from
今天我们在进一步了解一下,生成器. ①: def func(): print('这是函数func') return '函数func' func() 结果是 这是函数func ②: def func1( ...
- js实现螺旋纹理特效
效果如下 实现代码如下: <!doctype html> <html> <head> <meta charset="UTF-8" ...
- 有关ie9 以下不支持placeholder属性以及获得焦点placeholder的移除
(一)placeholder 属性起到提示客户输入信息作用 (二)ie9以下出问题了 placeholder不支持 (三)解决办法 先贴html 加上jquery代码就可以了 关于表单获取焦点,chr ...
- TortoiseGit客户端安装及使用(上传代码到git@osc
用TortoiseGit客户端之前要下载安装git http://git-scm.com/download/win 下载完安装完就可以了,之后好像就用不上了,全交给TortoiseGit客户端了 第一 ...
- 【Linux】Linux入门及常见基本操作命令详解
本文基于 Red Hat Enterprise Linux 6 一.Linux 入门体验 1.1 root用户登陆 1.2 图形化与纯字符模式切换 init 5 - 图形模式 init 3 - 纯字符 ...
- dialog和dialogFragment的使用及常用问题
今天比较懒,只是列举了一些网址 弹窗之一:dialogFragment的使用 https://blog.csdn.net/sinat_31057219/article/details/76979246 ...