- 浏览: 369604 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (335)
- C++ (190)
- 设计模式 (43)
- 数据库技术 (5)
- 网络编程 (11)
- 自动化测试 (6)
- Linux (13)
- OpenSSL (10)
- MS Crypt API (5)
- SCM (2)
- English (4)
- Android (10)
- EMV规范 (1)
- Saturn Platform (0)
- C (10)
- SQL (2)
- ASP.NET (3)
- 英语口语学习 (3)
- 调试工具 (21)
- 编译技术 (5)
- UML (1)
- 项目管理 (5)
- 敏捷开发 (2)
- Http Server (6)
- 代码审查、代码分析 (5)
- 面试基础 (10)
- 重点知识 (16)
- STL (6)
- Efficient C++资料 (8)
- 数据结构和算法 (7)
- 读书笔记 (0)
- 开源项目 (4)
- 多线程 (2)
- Console App (6)
- 个人开源项目 (4)
- IBM DevelopWorks (4)
- Java (16)
- 内存泄漏相关调试和检测 (13)
- 软件测试相关技术 (2)
- C# (11)
- Apple Related (1)
- 软件测试和管理 (2)
- EMV (1)
- Python (1)
- Node.js (6)
- JavaScript (5)
- VUE (1)
- Frontend (1)
- Backend (4)
- RESTful API (3)
- Firebase (3)
最新评论
-
u013189503:
来个密码吧
[C++][Logging] 项目中写日志模块的实现 -
wyf_vc:
来个密码啊!!
[C++][Logging] 项目中写日志模块的实现
转自: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'.
看看是不是很好玩,也许特殊情况下,用一次也很有趣.
发表评论
-
FreeRTOS
2022-03-05 16:31 247Ref https://blog.csdn.net/weix ... -
串口通讯相关
2018-11-02 13:44 410https://bbs.csdn.net/wap/topics ... -
[转]C++验证IP是否可以PING通
2018-10-30 17:54 1325https://www.cnblogs.com/guoyz13 ... -
C++/MFC 換皮膚
2018-10-20 11:05 476https://blog.csdn.net/u01123991 ... -
WinCE 截屏 - C++ 代碼
2018-08-31 09:45 573// this function create a bmp ... -
Android NDK搭建環境
2017-11-27 13:25 579https://www.cnblogs.com/ut2016- ... -
8583协议相关
2017-10-17 13:38 5728583相关资料,整理中... -
Java高级应用之JNI
2017-06-19 09:00 599参考link http://www.cnblogs.com/l ... -
C++实现ping功能
2017-04-18 11:21 2154基础知识 ping的过程是向目的IP发送一个type=8的I ... -
OpenSSL 编译环境搭建
2017-03-27 15:01 9051 安裝VS2008到 c:\Program Files (x ... -
最优非对称加密填充(OAEP)
2017-03-25 14:53 1582OpenSSL命令---rsautl http://blog. ... -
[Platform Builder] 设置SVM OS build Env
2016-11-10 11:39 01 copy one OSDesign Project to ... -
[Windows] System Error Codes(GetLastError )0-----5999
2016-10-26 13:28 1880ERROR_SUCCESS 0 (0x0) T ... -
开源Windows驱动程序框架
2016-09-17 21:35 870转自 http://code.csdn.net/news/28 ... -
c/c++代码中执行cmd命令
2016-09-14 14:50 1907转自 http://blog.csdn.net/slixinx ... -
C#使用C++标准DLL实例(包含callback)
2016-09-11 19:44 1085C++编写标准Win32DLL如下 头文件 /***** ... -
C#调用C++的DLL搜集整理的所有数据类型转换方式
2016-09-09 16:07 968转自 http://www.cnblogs.com/zeroo ... -
WinCE CPU使用率计算 测试工具
2016-09-08 16:14 990转自 http://blog.csdn.net/jan ... -
switch在C++与C#中的一些差异
2016-09-08 15:19 809参考链接 http://blog.csdn.net/weiwe ... -
C++ 鼠标模拟程序
2016-09-04 12:09 1611转自 http://blog.csdn.net/weixinh ...
相关推荐
本文将详细介绍C/C++中的宏定义基础知识,包括宏的基本用法、常见陷阱以及如何正确地使用宏来提升程序质量。 #### 二、宏的基本概念 宏定义是通过预处理器(preprocessor)在编译之前进行替换操作的一种机制。宏...
C/C++ 中 #ifndef 和 #define 的用法 #ifndef 和 #define 是 C 语言中的两个重要命令,它们在实际编程中扮演着重要角色。#ifndef 命令用来判断一个宏是否已经定义,而 #define 命令则用来定义一个宏。下面我们将...
### #define宏定义的一些用法总结 #### 一、引言 在C及C++编程中,`#define`是一个非常强大的预处理器指令,用于创建宏。宏可以在编译前阶段替代代码片段,提高代码的复用性与可维护性。本文将详细探讨`#define`的...
在C/C++编程语言中,`#define` 是预处理器指令,用于创建宏定义,它在编译阶段执行文本替换,使得代码更加灵活且可定制化。宏定义是C/C++编程中的一个重要概念,它可以帮助程序员实现代码复用、简化复杂表达式、提供...
在C/C++编程中,宏定义(#define)是一种预处理器指令,用于创建符号常量或简单的文本替换。宏在程序编译时起作用,它不是真正的函数,但可以通过模拟函数调用来实现类似的功能,从而提高代码的可读性和可维护性。在...
`#define` 是一个宏定义指令,用于定义宏。它可以用来定义常量、函数等。当预处理器遇到被 `#define` 定义的宏时,会将后续代码中的宏名替换为对应的定义。 #### 三、#ifndef 与 #define 的具体应用 ##### 1. 防止...
在C/C++编程中,`const`常量和`#define`宏定义是两种常见的常量表示方法,但它们在处理方式、类型检查、存储方式、空间效率以及使用场景上存在显著区别。 首先,处理方式不同。`#define`宏是在预处理阶段进行文本...
C/C++语言宏定义使用实例详解 C/C++语言宏定义是C/C++语言中一种非常重要的机制,它可以帮助开发者在编写代码时更加灵活和高效。宏定义可以用来防止头文件的重定义,实现跨平台的编译,简化代码编写等。 防止...
在C++编程中,`const`常量与`#define`宏定义是两种常见的定义常量的方法,但它们之间存在显著的区别,这些区别主要体现在编译器处理方式、类型和安全检查、存储方式以及对程序效率的影响上。 ### 1. 编译器处理方式...
**预处理指令** 是 C/C++ 编程语言中的一个重要组成部分,它在编译之前由预处理器执行。预处理指令通常用于宏定义、文件包含、条件编译等操作。这些指令以 `#` 字符开头,后面跟具体的指令内容。 #### 二、`#ifndef...
C/C++ 宏是编程语言中的预处理器指令,它们允许程序员在编译阶段进行文本替换,从而实现代码的自动化生成。尽管宏有时被认为可能导致代码难以理解和维护,但在适当使用的情况下,它们可以极大地提高效率和代码复用。...
在本文中,我们将详细介绍 #define 指令的用法、实例和注意事项。 定义 ---- #define 指令的基本语法有两种形式: ```c #define identifier token-stringopt #define identifier[( identifieropt, ... , ...
C/C++的预处理阶段是编译过程的第一步,包括宏定义(#define)、条件编译(#if, #ifdef, #ifndef, #else, #endif)以及头文件包含(#include)。宏定义允许我们创建可替代的文本,而条件编译则根据特定的条件选择性...
当宏定义需要跨越多行时,必须在每行末尾添加反斜杠 `\`,例如 MFC 中的宏定义: ```cpp #define MACRO(arg1, arg2) do{ \ /* declarations */ \ stmt1; \ stmt2; \ /* more code */ \ } while(0) /* ...
- **头文件结构**:介绍头文件的组织形式和最佳实践,包括宏定义、类型定义等。 - **定义文件结构**:指导如何组织源代码文件,确保可读性和可维护性。 - **头文件作用**:阐述头文件在项目中的功能,如声明类、接口...
预处理器负责在编译前对源代码进行处理,如宏定义(#define)、条件编译(#ifdef/#ifndef/#endif)等。理解预处理器的用法可以优化代码并实现条件编译。 十、命名空间与类 在C++中,命名空间(namespace)避免了...
### C/C++面试指南知识点概览 #### 第一篇:求职 **1.1 企业与人才** - **1.1.1 企业需要什么...通过以上知识点的学习,面试者不仅可以巩固自己的C/C++基础,还能够提高解决实际问题的能力,从而在面试中脱颖而出。