易截截图软件、单文件、免安装、纯绿色、仅160KB

C中预编译宏定义

C中预编译宏定义
2010-01-07 11:49
在将一个C源程序转换为可执行程序的过程中, 编译预处理是最初的步骤. 这一步骤是由预处理器(preprocessor)来完成的. 在源流程序被编译器处理之前, 预处理器首先对源程序中的"宏(macro)"进行处理.
C 初学者可能对预处理器没什么概念, 这是情有可原的: 一般的C编译器都将预处理, 汇编, 编译, 连接过程集成到一起了. 编译预处理往往在后台运行. 在有的C编译器中, 这些过程统统由一个单独的程序来完成, 编译的不同阶段实现这些不同的功能. 可以指定相应的命令选项来执行这些功能. 有的C编译器使用分别的程序来完成这些步骤. 可单独调用这些程序来完成. 在gcc中, 进行编译预处理的程序被称为CPP, 它的可执行文件名为cpp.
编译预处理命令的语法与C语言的语法是完全独立的. 比如: 你可以将一个宏扩展为与C语法格格不入的内容, 但该内容与后面的语句结合在一个若能生成合法的C语句, 也是可以正确编译的.
(一) 预处理命令简介
预处理命令由#(hash字符)开头, 它独占一行, #之前只能是空白符. 以#开头的语句就是预处理命令, 不以#开头的语句为C中的代码行. 常用的预处理命令如下:
#define              定义一个预处理宏
#undef             取消宏的定义
#include           包含文件命令
#include_next   与#include相似, 但它有着特殊的用途
#if                     编译预处理中的条件命令, 相当于C语法中的if语句
#ifdef               判断某个宏是否被定义, 若已定义, 执行随后的语句
#ifndef            与#ifdef相反, 判断某个宏是否未被定义
#elif                 若#if, #ifdef, #ifndef或前面的#elif条件不满足, 则执行#elif之后的语句, 相当于C语法中的else-if
#else               与#if, #ifdef, #ifndef对应, 若这些条件不满足, 则执行#else之后的语句, 相当于C语法中的else
#endi


相关文档:

常见问题 之 win32平台下用C开发Socket程序

常见问题:
编译失败,报错如下“无法解析的外部符号 _WSACleanup@0”等。
原因是没有引用winsock.h所在的库--Ws2_32.lib。
这时只要添加一行代码
 #pragma   comment(   lib,   "Ws2_32.lib")
即可。 ......

Linux驱动开发之S3C2440按键点亮LED

文章记录了作者在S3C2440开发板上实现按键点亮LED驱动开发的详细过程,还记录了一些容易出现的错误,以及怎么解决这些错误。
一、驱动开发流程
       Linux驱动开发不同于应用程序的开发。驱动开发是直接和硬件打交道的,通过对硬件的操作给应用程序提供一些接口函数,使得应用程序能够&l ......

C/C++ header file lists

  C/C++头文件一览 收藏
C/C++头文件一览
C、传统 C++
#include <assert.h>    //设定插入点
#include <ctype.h>     //字符处理
#include <errno.h>     //定义错误码
#include <float.h>     //浮点数处理
#include <fstream.h>    //文件输入/输出
#i ......

C/C++程序员应聘常见面试题深入剖析(1)


C/C++程序员应聘常见面试题深入剖析(1)
作者:宋宝华 e-mail:21cnbao@21cn.com 出处:软件报
1.引言
本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的
大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。
许多面试题看似简单,却需要深厚的基本功才能给出完美 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号