c语言declare.h的作用,关于C语言预处理面试题有哪些?

本文是作者收集了一些关于C语言预处理面试题,此题可以为正在找工作的同事们提供很好的帮助。所以今天就写篇推送给大伙好好讲讲这写关于预处理的面试题,也让我们的学习尽可能和实际岗位需求接轨,话不多说了,请看题:

问题1:什么是预编译?何时需要预编译?

答:

预编译又称预处理,是整个编译过程最先做的工作,即程序执行前的一些预处理工作。主要处理#开头的指令。如拷贝#include包含的文件代码、替换#define定义的宏、条件编译#if等。.

何时需要预编译:

1、总是使用不经常改动的大型代码体。

2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。

问题2:写一个“标准”宏,这个宏输入两个参数并返回较小的一个

答:#define MIN(x, y) ((x)

问题3:#与##的作用?

答:#是把宏参数转化为字符串的运算符,##是把两个宏参数连接的运算符。

例如:

#define STR(arg) #arg 则宏STR(hello)展开时为”hello”

#define NAME(y) name_y 则宏NAME(1)展开时仍为name_y

#define NAME(y) name_##y 则宏NAME(1)展开为name_1

#define DECLARE(name, type) typename##_##type##_type,

则宏DECLARE(val, int)展开为int val_int_type

问题4:如何避免头文件被重复包含?

答:例如,为避免头文件my_head.h被重复包含,可在其中使用条件编译:

#ifndef _MY_HEAD_H

#define _MY_HEAD_H /*空宏*/

/*其他语句*/

#endif

以上关于C语言预处理面试题及答案分享给大家,也希望大家在面试过程中找到自己所喜欢的企业。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值