`
freesoftman
  • 浏览: 319816 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

#define用法 (转帖改编)

 
阅读更多

CCmdTarget实现com接口的时候,在afxdisp.h头文件中一些宏的定义
#define BEGIN_INTERFACE_PART(localClass, baseClass) \
class X##localClass : public baseClass \

\是什么作用:续行符:表示在一行中。因为宏只能在一行中定义

本来这个宏定义很容易理解的,但是这里多出个X##,我真没见过这种用法,不晓得它是什么用意。后来问了几个朋友也都不知道。
你知道么?
也许你也不知道~呵呵,最后我还是找到了相关的资料,解读了这个define,还顺便认识了另外两个不常用的define
#define Conn(x,y) x##y
#define ToChar(x) #@x
#define ToString(x) #x
x##y表示什么?表示x连接y,举例说:
int n = Conn(123,456); 结果就是n=123456;
char* str = Conn("asdf", "adf")结果就是 str = "asdfadf";
怎么样,很神奇吧
再来看#@x,其实就是给x加上单引号,结果返回是一个const char。举例说:
char a = ToChar(1);结果就是a='1';
做个越界试验char a = ToChar(123);结果是a='3';
但是如果你的参数超过四个字符,编译器就给给你报错了!error C2015: too many characters in constant :P

最后看看#x,估计你也明白了,他是给x加双引号
char* str = ToString(123132);就成了str="123132";

最后留几个小试验给大家去测测:
#define Dec(x,y) (x-y)
int n = Dec( A(123,1), 1230);
n = Conn(123, Conn(123,332) );
char* str = A("12", ToString( Dec(3,1));
结果会如何呢? 嘿嘿嘿嘿~

分享到:
评论

相关推荐

    【C/C++】#ifndef,#define用法

    C/C++ 中 #ifndef 和 #define 的用法 #ifndef 和 #define 是 C 语言中的两个重要命令,它们在实际编程中扮演着重要角色。#ifndef 命令用来判断一个宏是否已经定义,而 #define 命令则用来定义一个宏。下面我们将...

    C语言 #define用法集锦[修正版]

    ### C语言 #define 用法集锦 #### 1. 简单的 `#define` 定义 `#define` 指令在C语言中被广泛用于定义符号常量,即所谓的宏定义。它允许程序员为特定的值或表达式赋予一个标识符,从而简化代码编写并提高可读性。 ...

    #define 问题 用法陷阱

    然而,`#define`的不当使用可能会引入一系列的问题和陷阱,本文将深入探讨这些陷阱及其解决方法。 #### 宏定义陷阱 ##### 1. 括号的重要性 当定义一个宏时,如果不正确地使用括号,可能会导致意想不到的结果。...

    #define用法集锦.doc

    《#define 用法集锦》 在C/C++编程中,`#define`预处理器指令扮演着重要的角色,它可以用来定义常量、创建类似函数的功能以及实现条件编译等。下面我们将深入探讨`#define`的各种用法。 1. **简单的#define定义** ...

    #define——用法大全

    关于 #define 指令的用法大全 #define 指令是 C 语言中的一种预处理指令,用于给常量赋予一个有意义的名称。在本文中,我们将详细介绍 #define 指令的用法、实例和注意事项。 定义 ---- #define 指令的基本语法有...

    #ifndef #define #endif的用法

    ### #ifndef #define #endif 的使用详解 #### 一、预处理指令简介 在深入讨论 `#ifndef`, `#define`, `#endif` 这三个预处理指令之前,我们需要先了解预处理指令的基本概念。 **预处理指令** 是 C/C++ 编程语言中...

    简单实现贪吃蛇游戏源代码

    #define MAXLEN 201 #define LEN 1 #define SPEED1 50 #define SPEED2 100 #define SPEED3 200 #define FOOD1_S1 5 #define FOOD1_S2 10 #define FOOD1_S3 15 #define FOOD2_S1 10 #define FOOD2_S2 20 #define FOOD...

    #define的使用技巧

    在C语言中,宏定义是使用预处理器指令#define实现的一种编译前文本替换机制。它在编译之前处理源代码,使得可以定义常量、实现内联函数以及防止头文件被重复包含等多种功能。下面详细说明标题和描述中提到的知识点。...

    const #define inline

    在编程领域,`const`、`#define`与`inline`是三个常用的关键字或预处理器指令,它们各自具有独特的作用和使用场景,掌握它们的区别和正确应用是提升代码质量和效率的重要手段。 #### 1. `const`关键字 `const`...

    宏定义#define用法总结

    C语言中宏定义#define用法总结 在 C 语言中,宏定义(#define)是一种非常重要的预处理器指令,它可以让我们在编译前对代码进行修改和扩展。本文将对宏定义的用法进行总结,包括简单的宏定义、带参数的宏、宏的特殊...

    宏(#define)定义函数妙用

    例如,`SUM(a + b, c + d)` 使用宏 `#define SUM(x, y) x + y` 会被错误地展开为 `a + b + c + d`,而不是 `(a + b) + (c + d)`。为了避免这种情况,通常需要在宏定义中加入额外的括号。 此外,宏定义不支持重载,...

    #indef 与#define 区别于用法

    ### #ifndef 与 #define 的区别及用法详解 #### 一、概述 在C/C++编程中,预处理指令是非常重要的组成部分,它们在编译前由预处理器执行,能够帮助开发者实现代码重用、条件编译等功能。本文将重点讨论 `#ifndef` ...

    #define和typedef的使用

    ### #define 的使用及其特性 #### 一、无参宏定义 无参宏定义是最基本的一种宏定义形式,主要用于简化代码书写或者定义常量。其一般形式为:`#define 宏名 字符串`。 - **举例**: ```c #define PI 3.1415926 `...

    预编译器——#include和#define的实现

    在编程世界中,预编译器是程序开发过程中的一个重要环节,它负责处理源代码中的特定指令,如`#include`和`#define`。这些指令在实际编译之前进行处理,以帮助简化和优化源代码。让我们深入探讨一下`#include`和`#...

    单片机-#define XBYTE ((unsigned char volatile xdata *) 0)

    在单片机编程中,尤其是在使用C51语言进行编程时,为了能够有效地访问不同存储空间的数据,通常会使用一系列宏定义来辅助开发工作。本文将围绕宏定义`#define XBYTE ((unsigned char volatile xdata *) 0)`展开,...

    预编译#define_#ifdef_#endif用法

    `#define`, `#ifdef`, `#endif`等预编译指令帮助程序员根据特定条件来决定哪些代码应该被编译,从而实现代码的灵活性和可配置性。 `#define`是宏定义指令,用于创建一个符号常量。例如,`#define DEBUG`将DEBUG定义...

    #define VS typedef

    一般来说,如果我们需要定义一个常量或宏语句,应该使用 #define,而如果我们需要定义一个关键字或冗长的类型的别名,应该使用 typedef。 最后,让我们来看一下一些示例。例如:`typedef (int*) pINT;` 和 `#define...

    typedef和#define的用法与区别

    typedef和#define的用法与区别 一、typedef的用法 在C/C++语言中,typedef是一种语言编译过程中的一部分,它常用来定义一个标识符及关键字的别名。它并不实际分配内存空间,实例像:typedef int INT;typedef int ...

    1602液晶驱动

    1602液晶显示的底层驱动c程序,#define DataDir P4DIR #define DataPort P4OUT #define Busy 0x80 #define CtrlDir P5DIR #define CLR_RS P5OUT&=~BIT5; //RS = P5.5 #define SET_RS P5OUT|=BIT5; #define CLR...

    #define 宏定义的一些用法总结

    ### #define宏定义的一些用法总结 #### 一、引言 在C及C++编程中,`#define`是一个非常强大的预处理器指令,用于创建宏。宏可以在编译前阶段替代代码片段,提高代码的复用性与可维护性。本文将详细探讨`#define`的...

Global site tag (gtag.js) - Google Analytics