`
wengshanjin
  • 浏览: 23578 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

C语言#define的特殊用法

阅读更多
#define Conn(x,y) x##y

##表示x连接y,举例说:
int  n = Conn(123,456);  结果就是n=123456;
char* str = Conn("asdf", "adf")结果就是 str = "asdfadf";

#define ToChar(x) #@x

#@表示给x加上单引号,结果返回是一个const char。举例说:
char a = ToChar(1);结果就是a='1';
做个越界试验char a = ToChar(123);结果是a='3';
但是如果你的参数超过四个字符,编译器就给给你报错了!error C2015: too many characters in constant

#define ToString(x) #x

#x表示给x加双引号,结果返回一个const char*。举例说:
char* str = ToString(123132);就成了str="123132";

在编译时断言识别
#define assertAtCompile(AssertName, bAssertion) char AssertName[(bAssertion) ? 1 : -1];

使用:
assertAtCompile(assert1, true);
assertAtCompile(assert2, str.empty());

分享到:
评论

相关推荐

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

    这些特殊用法主要用于字符串化和连接操作,但在实际编程中较少见。 #### 3.2 `#define` 的多行定义 `#define` 还可以用于定义多行的代码块,这对于复杂的宏定义非常有用。为了实现这一点,需要在每行的末尾添加反...

    C语言宏定义##连接符和#符的使用

    本文将详细介绍C语言宏定义中两个特殊符号的使用:连接符`##`和字符串化符`#`。 #### 连接符`##`(Concatenation Operator) 连接符`##`用于宏展开时合并两个或多个token为一个单一的token。这一特性在构建动态...

    宏定义#define用法总结

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

    C语言中##的用法总结

    `#`和`##`是预处理器宏中的两个特殊操作符,它们有着特定的用途。 首先,`#`操作符用于将宏参数转换为字符串字面量。在宏定义中,如果`#`操作符紧跟在一个宏参数后面,当宏被展开时,这个参数将被替换为对应的字符...

    C语言宏定义中#与##运算符

    本文将详细介绍这两个运算符的使用方法及注意事项。 #### 二、# 运算符:字符串化 **2.1 定义** `#` 运算符的功能是将宏的一个参数转换为字符串字面量,这个过程被称为**字符串化**。该运算符只能出现在带有参数...

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

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

    C语言中特殊用法

    ### C语言中的特殊用法详解 #### 一、`_near_func` 和 `_far_func` 的用法 在C语言编程中,特别是针对特定架构如x86时,程序员可能会遇到需要控制函数调用的方式的情况。`_near_func` 和 `_far_func` 这两种特殊...

    C语言中“#”和“##”的用法.pdf

    在C语言中,“#”和“##”是预处理指令中使用的特殊操作符,它们在宏定义和对象参数化的上下文中具有独特的用法。以下是关于这两个操作符的详细知识点: 1. 宏定义中的“#”操作符 “#”操作符在宏定义中用于将宏...

    C语言:栈(含括号匹配)仅供初学者

    此内容适合初学者理解栈的基本概念、实现方法及如何使用栈解决实际问题。 ### C语言栈的基本概念 栈是一种特殊的线性表,只允许在一端进行插入或删除操作,该端称为栈顶。与之相对的另一端称为栈底。当栈为空时,...

    #define((volatile unsigned *) ) 讲解

    本文主要讨论的是结合`volatile`关键字和指针类型使用的一种特殊语法,来确保对特定内存地址的访问总是最新的。我们将深入探讨`volatile`、指针以及它们在C语言中的应用。 首先,`volatile` 是一个存储类修饰符,...

    特殊符号#,##的用法

    本文介绍了C语言中特殊符号 `#` 和 `##` 的用法以及可变参数宏 `__VA_ARGS__` 的应用。通过具体的示例代码,我们可以看到如何利用这些特性来编写更加灵活和强大的宏。`#` 操作符可以帮助我们在运行时生成动态文本...

    单片机C语言中变量的定义方法解析.docx

    ### 单片机C语言中变量的定义方法解析 #### C语言中变量的定义方法 在单片机编程中,特别是在使用C语言进行开发时,正确地定义变量是非常重要的。良好的变量定义不仅可以帮助提高代码的可读性和维护性,还可以有效...

    关于C语言宏定义技巧

    ### 宏定义的基本用法 宏定义最简单的形式是定义常量,如`#define PI 3.14159`。然而,宏的功能远不止于此。它们可以用于条件编译、类型定义、计算表达式以及复杂的代码生成。 ### 条件编译与头文件保护 条件编译...

    C++ define介绍及使用

    然而,尽管`#define`在早期的C++和C语言中广泛使用,但在现代C++中,推荐使用更安全的`const`和`enum`来代替,以避免某些潜在问题。 **1. 定义符号常量** 符号常量是一个固定不变的值,它在程序的整个生命周期中...

    CC++常见标准头文件前的一般格式解析2

    在C++中,`extern "C"`是一种特殊的关键字组合,用于告诉C++编译器以C语言的链接约定来处理声明或定义。这在需要与C代码交互时非常重要,因为C++支持名称修饰(Name Mangling),而C语言则不支持。 ### `extern "C...

    Linux c中define的用法小结

    【Linux C语言中#define的用法】 在C语言中,`#define` 是预处理器指令,用于创建宏,实现文本替换。宏定义的作用是在编译阶段将标识符替换为其指定的值,从而达到代码复用和简化的目的。下面将详细阐述`#define`的...

    51单片机C语言的编程技巧

    - **定义特殊设备**:使用特定的指令(如`#define`)定义单片机中的特殊寄存器或端口。 #### 五、项目管理和编译 为了便于管理和编译,通常使用项目来组织单片机程序。项目主要分为两个部分: - **源文件**:每个...

    如何写C语言的头文件

    ### 如何编写C语言的头文件 #### 一、头文件的基本概念 在C语言编程中,头文件是非常重要的组成部分,它们主要用于...此外,理解预处理指令的使用方法也是非常有用的,它们可以帮助我们更好地控制代码的编译流程。

    DSP中CSL头文件中宏中#和##的用法介绍

    在数字信号处理(DSP)领域,常常需要使用到C语言扩展的预处理器宏来实现代码的复用和灵活配置。在CSL(Control/Status Registers Library)头文件中,我们经常会遇到宏定义中使用到的`#`和`##`运算符。这两个运算符...

Global site tag (gtag.js) - Google Analytics