define组合一般用于头文件中|用 #define 定义的一组宏是不是适合放在头文件中

① VC中define定义的宏应该放在头文件还是源文件

定义,为了便于使用可另外在头文件中声明。(理解定义和声明的区别)函数原型、数据结构、宏根据使用的范围而定,只在一个cpp中使用,就在那个cpp中定义就可以了,否则放到一个公共的头文件中。类一般在头文件中定义。另外,虚机团上产品团购,超级便宜

② 头文件中的 ifndef/define/endif 干什么用

#ifndef、#define、#endif为C语言的3条预处理语句,主要用作条件编译。先介绍一下条件编译:

一般情况下,源代码文件中的所有行都参加编译,但有时需要指定一部分代码在某个条件下才被编译,这就叫做条件编译。

条件编译发生在预处理阶段,在C中,主要通过#if、#elif、#else、#ifdef、#ifndef、#endif来给一段代码附加上编译条件,然后预处理器收集满足条件的可以进行编译的代码,这样经过预处理,不满足条件的代码就不会被编译。

这3个预处理语句的功能分别为:

#ifndefsymbol语句块#endif

如果没有定义符号symbol,那么就编译下面指定的语句块,用endif来表示条件编译语句的结尾。

#definesymbol

定义一个符号symbol。

这三个预处理语句用在一起可以解决头文件被重复引用的问题:一个.c源程序中可能引用了多个头文件,而被源程序引用的头文件又有可能存在引用关系,比如a.h引用了b.h,然后在源程序中同时引用a.h和b.h,就会产生这个问题,这时编译器会产生符号重定义之类的错误。为了防止该问题,就需要在头文件中加入以下语句:

#ifndefsymbol#definesymbol头文件包含的内容#endif

这样即可防止该头文件被重复引用。symbol一般采取以下方式命名:_头文件名_H,当然也可采取其他方式。

另外,对于有的编译器也可以在头文件中加入#pragma once来防止头文件被重复引用

③ c语言中,头文件define是什么意思。

#开头的都是预处理。define其实就是文本替换,同时可以有简单的逻辑判断。1、普通情况 #define OK 1 #define rt return代码里所有的OK都会被替换成1,所有的rt都会被替换成return2、带括号的情况 #define func(XX) print(XX)代码里的func会被替换成print 然后XX会对应。

④ 用 #define 定义的一组宏是不是适合放在头文件中

在头文件最上部加#ifndef XXX#define XXX最下部写#endif防止重复定义

⑤ 单片机c语言一个头文件中包含许多只有一个标识符的#define,为什么

#define后面只跟一个标识符,表示这个标识符不代表任何值,就是一个空的标识符,常用于作为一个前缀标识,只是为了增加代码的可读性。这样说你可能还不明白,其实这样的用法在很多地方都会出现,比如MFC和Windows SDK头文件中有一个修饰函数参数的#define定义,它的定义是这样的:#define IN#define OUT然后它的用法可能是这样的:void function(IN LPARAM lParam, OUT WPARAM outparam);IN和OUT只是修饰,不代表任何东西,所起的只是一个说明作用,说明一个参数是一个输入参数,而另一个是一个输出参数,还能增加代码的可读性。

⑥ 头文件中的ifndef/define/endif什么用处

ifndef和endif是一对条件预编译语句,给你一个例子:

ifndef abc;//意思是如果没有定义abc这个特征符,则编译之后到endif之前的语句否则略过

//define abc;这条语句;

define abc;

endif;

比如有一段代码,有时需要根据需要不进行编译或进行编译,如以下代码:

ifdef abc;

某段代码;

endif;

意思就是如果程序中定义了abc特征符,则编译这里所说的"某段代码”,否则不进行编译,

如果程序是这样:

ifndef abc;

define abc;

endif;

ifdef abc;

某段代码;

endif;

则这里所说的“某段代码”肯定会被编译,因为在设计程序之初,可能需要根据某个条件来决定是否编译“某段代码”,但是后来发现,这样的条件编译已经没有必要,而且必须要编译“某段代码”,两种办法,一种是把ifdef abc和endif;去掉;另一种就像这里一样,在

ifdef abc;

某段代码;

endif;

之前加

ifndef abc;

define abc;

endif;


赞 (0)