`

#(井号)在C/C++的#define宏定义中的特殊用法

    博客分类:
  • C++
 
阅读更多

转自:http://blog.sina.com.cn/s/blog_4b650d650100pufd.html

http://359611946.blog.163.com/blog/static/11619002011413102539518/

http://www.delnabla.cn/article.asp?id=205

http://hi.baidu.com/hpagent/blog/item/d069bcd6a4a15713a18bb789.html

 

 

工作需要,被迫看了一段老外编写的C++代码,开始被老外绕了一通,最后找到了原因.老外真是牲口,妈的啥技巧都用,查了一下书知道了几个#号在#define宏定义中的特殊用法,不过这东西好像在特殊情况下的确会有些用途,不防分享一下,我也是从网上抄来的,不好意思:   

    1. #:在宏展开的时候会将#后面的参数替换成字符串,如:

          #define p(exp) printf(#exp);

       调用p(asdfsadf)的时候会将#exp换成"asdfsadf"

    2. ##:将前后两个的单词拼接在一起。例如《The C Programming Language》中的例子:

          #define cat(x,y) x##y

       调用cat(var, 123)展开后成为var123.

    3. #@:将值序列变为一个字符

          #define ch(c) #@c

       调用ch(a)展开后成为'a'.

    看看是不是很好玩,也许特殊情况下,用一次也很有趣.

 

分享到:
评论

相关推荐

    c/c++宏定义 宏定义的入门教材 基础

    本文将详细介绍C/C++中的宏定义基础知识,包括宏的基本用法、常见陷阱以及如何正确地使用宏来提升程序质量。 #### 二、宏的基本概念 宏定义是通过预处理器(preprocessor)在编译之前进行替换操作的一种机制。宏...

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

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

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

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

    常用宏定义#define

    在C/C++编程语言中,`#define` 是预处理器指令,用于创建宏定义,它在编译阶段执行文本替换,使得代码更加灵活且可定制化。宏定义是C/C++编程中的一个重要概念,它可以帮助程序员实现代码复用、简化复杂表达式、提供...

    宏(#define)定义函数妙用

    在C/C++编程中,宏定义(#define)是一种预处理器指令,用于创建符号常量或简单的文本替换。宏在程序编译时起作用,它不是真正的函数,但可以通过模拟函数调用来实现类似的功能,从而提高代码的可读性和可维护性。在...

    #indef 与#define 区别于用法

    `#define` 是一个宏定义指令,用于定义宏。它可以用来定义常量、函数等。当预处理器遇到被 `#define` 定义的宏时,会将后续代码中的宏名替换为对应的定义。 #### 三、#ifndef 与 #define 的具体应用 ##### 1. 防止...

    C/C++:const常量与define宏定义的区别

    在C/C++编程中,`const`常量和`#define`宏定义是两种常见的常量表示方法,但它们在处理方式、类型检查、存储方式、空间效率以及使用场景上存在显著区别。 首先,处理方式不同。`#define`宏是在预处理阶段进行文本...

    C/C++语言宏定义使用实例详解

    C/C++语言宏定义使用实例详解 C/C++语言宏定义是C/C++语言中一种非常重要的机制,它可以帮助开发者在编写代码时更加灵活和高效。宏定义可以用来防止头文件的重定义,实现跨平台的编译,简化代码编写等。 防止...

    [C++中】const常量与define宏定义的区别

    在C++编程中,`const`常量与`#define`宏定义是两种常见的定义常量的方法,但它们之间存在显著的区别,这些区别主要体现在编译器处理方式、类型和安全检查、存储方式以及对程序效率的影响上。 ### 1. 编译器处理方式...

    #ifndef #define #endif的用法

    **预处理指令** 是 C/C++ 编程语言中的一个重要组成部分,它在编译之前由预处理器执行。预处理指令通常用于宏定义、文件包含、条件编译等操作。这些指令以 `#` 字符开头,后面跟具体的指令内容。 #### 二、`#ifndef...

    C/C++ 宏详解(详解)

    C/C++ 宏是编程语言中的预处理器指令,它们允许程序员在编译阶段进行文本替换,从而实现代码的自动化生成。尽管宏有时被认为可能导致代码难以理解和维护,但在适当使用的情况下,它们可以极大地提高效率和代码复用。...

    #define——用法大全

    在本文中,我们将详细介绍 #define 指令的用法、实例和注意事项。 定义 ---- #define 指令的基本语法有两种形式: ```c #define identifier token-stringopt #define identifier[( identifieropt, ... , ...

    Linux/C/C++函数中文使用手册

    C/C++的预处理阶段是编译过程的第一步,包括宏定义(#define)、条件编译(#if, #ifdef, #ifndef, #else, #endif)以及头文件包含(#include)。宏定义允许我们创建可替代的文本,而条件编译则根据特定的条件选择性...

    define用法完全集锦

    当宏定义需要跨越多行时,必须在每行末尾添加反斜杠 `\`,例如 MFC 中的宏定义: ```cpp #define MACRO(arg1, arg2) do{ \ /* declarations */ \ stmt1; \ stmt2; \ /* more code */ \ } while(0) /* ...

    高质量C/C++编程指南

    - **头文件结构**:介绍头文件的组织形式和最佳实践,包括宏定义、类型定义等。 - **定义文件结构**:指导如何组织源代码文件,确保可读性和可维护性。 - **头文件作用**:阐述头文件在项目中的功能,如声明类、接口...

    C/C++指令字典

    预处理器负责在编译前对源代码进行处理,如宏定义(#define)、条件编译(#ifdef/#ifndef/#endif)等。理解预处理器的用法可以优化代码并实现条件编译。 十、命名空间与类 在C++中,命名空间(namespace)避免了...

    c/c++面试指南

    ### C/C++面试指南知识点概览 #### 第一篇:求职 **1.1 企业与人才** - **1.1.1 企业需要什么...通过以上知识点的学习,面试者不仅可以巩固自己的C/C++基础,还能够提高解决实际问题的能力,从而在面试中脱颖而出。

Global site tag (gtag.js) - Google Analytics