社区
C++ Builder
帖子详情
#define的后面怎么会只有一串字符的?
fiveyes
2002-01-05 08:05:01
我看到书上说#define是编译预处理命令之一,主要用途是作宏替换,不带参的就是见一个换一个的“查找替换”,带参的可以灵活处理一点表达式,可是都是要后跟两个东西,一个是查找的东西,一个是替换的东西。但是我却经常看到这样的代码:
#define INC_VCLDB_HEADERS
#define INC_VCLEXT_HEADERS
……
也没看到#ifndef,这个#define怎么工作的呢?
...全文
287
9
打赏
收藏
#define的后面怎么会只有一串字符的?
我看到书上说#define是编译预处理命令之一,主要用途是作宏替换,不带参的就是见一个换一个的“查找替换”,带参的可以灵活处理一点表达式,可是都是要后跟两个东西,一个是查找的东西,一个是替换的东西。但是我却经常看到这样的代码: #define INC_VCLDB_HEADERS #define INC_VCLEXT_HEADERS …… 也没看到#ifndef,这个#define怎么工作的呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fiveyes
2002-01-29
打赏
举报
回复
后来的试验证明是这样的,原来事情是这么简单。
看到像#define XXXX的东西,我就给它加了点料,变成:
#define XXXX DOG
结果编译依然毫无问题。
hujun614
2002-01-05
打赏
举报
回复
通常都是这样的!
很多C/C++的头文件都这样包起来,我也爱这样用,
如下实例。
#ifndef NET_BAK_BAKSVR_HEADER_FJDKSL_JFEI_4893544
#define NET_BAK_BAKSVR_HEADER_FJDKSL_JFEI_4893544
......
#endif
fiveyes
2002-01-05
打赏
举报
回复
看来就是这么回事了。
fiveyes
2002-01-05
打赏
举报
回复
我这么理解成吗?
还有别的说法吗?
hely_cn
2002-01-05
打赏
举报
回复
learn.....
fiveyes
2002-01-05
打赏
举报
回复
To hujun614(胡均):
就是说,#define XXXXX这样的用法只是给后面的#ifdef之类的判断语句做个标记而已,只是在后面执行到象#ifdef XXXXX的时候,如果前面有了这个#define XXXXX,尽管没有给它做任何宏替换,都会使得#ifdef XXXXX的值变为true,是这样的吗?
fiveyes
2002-01-05
打赏
举报
回复
谢谢,不过这样的形式书上有介绍:
#ifndef XXXXXX
#define XXXXXX
问题是有时候看到这样的代码单独摆着:
#define INC_VCLDB_HEADERS
#define INC_VCLEXT_HEADERS
没看到它位于什么#ifXXX与#endif之间啊,
这是什么意思呢?
hujun614
2002-01-05
打赏
举报
回复
就是表明 INC_VCLDB_HEADERS, INC_VCLEXT_HEADERS
已被定义,以后可以用#ifndef INC_VCLDB_HEADERS,#if !defined(INC_VCLDB_HEADERS)
来判断是否定义过这个标记,可以保证在
#if !defined(INC_VCLDB_HEADERS)
...
#endif
中的定义只被定义一次。因为很多时候头文件包括头文件,这样就可以避免编译错误。
nickgg
2002-01-05
打赏
举报
回复
宏定义(#define)一般说来是条件便译
#define MacroName RepText
#define Macro
///////////////////////unit1.h//////////////////////////////
#ifndef Unit1H
#define Unit1H
class TForm1::public TForm
{
};
#endif
# #
define
以及 # ##解释
文章目录#
define
定义标示符#
define
的语法#
define
定义宏宏的声明方式# 和 ##的作用\#是将
字符
拼接在
字符
串中##是将两边的符号连接起来,成为一个符号 #
define
定义标示符 #
define
定义标示符就是将一个名称起一个别名,在程序运行之前使用别名将原来的名字替换掉,从而达到简化代码书写的作用 #
define
的语法
define
name stuff name是别名,stuff是原本的名称 #
define
NUM 120 #
define
STR "abcdef" int main(
#
define
后只有一个参数
#
define
AOMDV_PACKET_SALVAGING #
define
AOMDV_MAX_SALVAGE_COUNT 10 #
define
AOMDV_EXPANDING_RING_SEARCH 一般情况下,宏定义时的用法为:#
define
a b ,后接两个参数,表示用a代替b。 但很多时候,#
define
后只有一个参数,经常出现在头文件的开始处。 解释:
#
define
和const的区别
这个区别用从几个角度来说:角度1: 就定义常量说的话: const 定义的常数是变量 也带类型, #
define
定义的只是个常数 不带类型。角度2: 就起作用的阶段而言:
define
是在编译的预处理阶段起作用,而const是在 编译、运行的时候起作用。角度3: 就起作用的方式而言:
define
只是简单的
字符
串替换,没有类型检查。而const有对应的数据类型,是要进行判断的,可以避
#
define
后面
再加#号或##号的作用
#
define
后面
如果再加一个 # 号,那么这个符号的作用是文本参数“
字符
串化”,即出现在宏定义
字符
文本中的#把跟在
后面
的参数转换成一个C++
字符
串常量。 #
define
POUT1 printf(#x); #
define
POUT2 printf(x); POUT1(Hello World!); //语法正确 POUT1("Hello World!");//语法也正确 PO
#
define
的使用
目录 前言 1.#
define
定义标识符 2. #
define
定义宏 3.#
define
替换规则 4.宏和函数对比 前言 在很多C程序中,我们
会
在一个源文件的开头看到#
define
的字眼,和
define
的英文解释相同——可以理解为给xxx下定义,这里可以是标识符甚至是一个函数,接下来的内容将
会
对#
define
进行详解 1.#
define
定义标识符 使用#
define
可以用来定义标识符,所谓标识符可以简单理解为一个能够表示一定内容的符号,其格式为 #定义 标识符...
C++ Builder
13,826
社区成员
102,678
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章