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 ...
随机推荐
- oracle学习篇九:同义词
Oracle数据库中提供了同义词管理的功能.Oracle同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性. 在Oracle中对用户的管理是使用权限的方式来管理的,也就是说, ...
- BZOJ2535: [Noi2010]Plane 航空管制2(拓扑排序 贪心)
题意 题目链接 Sol 非常妙的一道题. 首先不难想到拓扑排序,但是直接对原图按\(k\)从小到大拓扑排序是错的.因为当前的\(k\)大并不意味着后面的点\(k\)也大 但是在反图上按\(k\)从大到 ...
- Highcharts - Bar Chart & Column Chart
1. 条形图(Bar Chart)需要的数据格式类型如下: ["Luke Skywalker", "Darth Vader", "Yoda" ...
- SharePoint 2013 - System Features
1. Embed Information & Convert to PDF 功能,在文档的preview界面(hover panel); 2. Share功能可以选择是否发送邮件 -- Don ...
- Ckrule业务规则管理系统简介
1. 简述 Ckrule业务规则管理系统(BRMS)是一个集成的应用程序存储.管理.执行和测试的平台,允许组织定义.部署.监控和维护运营系统使用的各种复杂决策逻辑.Ckrule BRMS 独立于核 ...
- 【PIC单片机】MPLAB X IDE快速入门指南
引言:近期由于项目实践需要,开始动手学习相关硬件知识.从PIC单片机入手. 单片机学习核心要点:查数据手册 配置寄存器 一.基于MPLAB X IDE配置位设置 MPLAB X IDE和MPLAB I ...
- Android SDK 目录和作用详解
1.add-ons这里面保存着附加库,比如GoogleMaps,当然你如果安装了OphoneSDK,这里也会有一些类库在里面.也可以是厂商自己制作的add-ons.开发中该文件是可选的,如果你没有用到 ...
- 【Leetcode】【Easy】Maximum Depth of Binary Tree
Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...
- wamp的www目录更改为指定目录
wamp的www目录更改为指定目录内容简介:主要过程: (1)修改httpd.conf文件 (2)修改新的www目录下的index.php文件 (3)修改manage.ini的278行和manage. ...
- vue+node+mongoose踩过的坑
1.当你在cmd中输入npm run dev的时候,出现这种错误 很有可能是目前的端口被占用了,可以把所有可能用到这个端口号的应用关闭或者你直接改一个新的端口号 修改端口的方法:新打开一个cmd,然后 ...