C语言中的预处理器示例

时间:2009-08-30 01:12:13

标签: c++ c

我想要一些C预处理器指令的例子,例如:

#define pi 3.14
#define MAX 100

我只知道这一点。 我想知道更多关于预处理器指令的信息。

6 个答案:

答案 0 :(得分:10)

最大的例子是

 #include<stdio.h>

但是有相当数量。您还可以定义宏:

 #define MAX(X,Y) (((X) > (Y)) ? (X) : (Y))

并使用header guards

#ifndef A_H
#define A_H

// code

#endif

编译器定义了专有扩展,允许您提供处理指令:

#ifdef WIN32 // WIN32 is defined by all Windows 32 compilers, but not by others.
#include <windows.h>
#else
#include <unistd.h>
#endif

if语句也可用于评论:

#if 0

int notrealcode = 0;

#endif

我经常使用预处理器来进行调试构建:

#ifdef EBUG
printf("Debug Info");
#endif

$ gcc -DEBUG file.c //debug build
$ gcc file.c //normal build

正如其他人都指出的那样,有很多地方可以获得更多信息:

答案 1 :(得分:5)

您是否完全熟悉基本原理,例如正如wikipedia所述?或者你需要一个初级教程?或者什么?

答案 2 :(得分:4)

可能是其中一个

可以提供帮助。

答案 3 :(得分:2)

处理器比#define要多得多。不要忘记#include和条件编译。

http://en.wikipedia.org/wiki/C_preprocessor

答案 4 :(得分:2)

最重要的一个:

#ifndef THIS_HEADER_H
#define THIS_HEADER_H

// Declarations go here    

#endif //THIS_HEADER_H

这使得头文件不会多次包含在单个C文件中。

对于gcc来源,我喜欢使用__LINE__,如:

printf("%s: %d: Some debug info\n", __func__, __LINE__);

用于调试目的。

答案 5 :(得分:1)

如果条件失败,这将停止编译。

#define WIDTH 10
#define HEIGHT 20

#if WIDTH < HEIGHT
#    error "WIDTH must be greater than or equal to HEIGHT"
#endif

C预处理器手册页 http://gcc.gnu.org/onlinedocs/cpp/index.html