C Language Study - the use of symbol '##'

##

#include <stdio.h>

#define INTVARIABLE(n) i##n

int main(void)

{

int INTVARIABLE(2) = 3;

printf("i2=%d\n",i2);//output i2=3

i2 = 5;

printf("i2=%d\n",i2);//output i2=5

return 0;

}

C Language Study - the use of symbol '##'

时间: 2024-10-29 10:45:44

C Language Study - the use of symbol '##'的相关文章

C Language Study - how to use &#39;#&#39;

宏中的#的功能是将其后面的宏参数进行字符串化操作(Stringizing operator),简单说就是在它引用的宏变量的左右各加上一个双引号. 如定义好#define STRING(x) #x之后,下面二条语句就等价. char *pChar = "hello"; char *pChar = STRING(hello); 还有一个#@是加单引号(Charizing Operator) #define makechar(x)  #@x char ch = makechar(b);与ch

C Language Study - 0 &amp; &#39;0&#39; &amp; &#39;\0&#39;

The difference of 0 & '0' & '\0' ------------------------------------------------------------ 0 is a number(decimal). ------------------------------------------------------------ '0' is a char. It's ASCII equal  48(decimal). ----------------------

C Language Study - &lt;转义字符&gt; &quot; \a is fantastic ! &quot;

C语言转义字符 转义字符 意义 阿斯科马值( ASCII)(十进制) \a 响铃BEL 007 \b 退格(BackSpace) ,将当前位置移到前一列(删除) 008 \f 换页(FF),将当前位置移到下页开头 012 \n 换行(LF) ,将当前位置移到下一行开头 010 \r 回车(CR) ,将当前位置移到本行开头 013 \t 水平制表(HT) (跳到下一个TAB位置) 009 \v 垂直制表(VT) 011 \\ 代表一个反斜线字符''\' 092 \' 代表一个单引号(撇号)字符 0

C Language Study - 指针的形式 &amp; 下标的形式

指针形式和下标形式 A> char *p = "abcdef";//定义一个字符串,用一个指针指向这个字符串 B>char a[] = "123456";//定义一个字符数组 a 是数组首元素的首地址,而不是数组的首地址 在上面的A>定义中,假如我们要取出c这个字符,那么有以下两种方法: <1> 指针的形式:*(p+3) <2>下标的形式:p[3] 两种方式,我们都可以这个进行理解: 编译器首先计算出p的值,也就是p所储存的

C Language Study - gets , getchar &amp; scanf

慢慢的发现C语言功底是如此的薄弱,被这几个字符输入函数搞糊涂了又~~ 来,再来忧伤一次吧~ 那么,我们从scanf开始: 假如说你要将一串字符输入到一字符数组里,如以下程序, char a[2]; char b[3]; scanf("%s%s",a,b); printf("%s\n%s",a,b); scanf使用%s接收字符串,但是并不是每一个输入的字符都会被当做字符串处理,空格,tab,换行,都会被残忍的拒绝,因此输入一串"带有空格的字符串"

C Language Study - 函数指针的使用

函数指针的使用 1.函数指针定义 第一次使用函数指针,我是这样声明的,typedef void ( *pSimulatepks )( uint8 *prxBuf, uint8 *prxBufLen ): 第一个括号(),将pSimulatepks包成一个指针,第二个括号(),意思就是一个函数的参数列表,所以pSimulatepks是一个函数指针,指向这样一类函数的指针. 上面声明了一个函数指针,就可以这样定义一个函数指针,pSimulatepks pfun; 2.函数指针调用函数 例如,有一个函

C Language study - switch case and continue

本文讨论研究在switch case语句中如何使用continue关键字. 一般的switch case语句格式: switch(?) { case num1: //something break; case num2: //something break; case numx: //something break; default: //default break; } 或者: switch(?) { case char1: //something break; case char2: //s

C Language Study - gets , getchar &amp;amp; scanf

慢慢的发现C语言功底是如此的薄弱,被这几个字符输入函数搞糊涂了又~~ 来,再来忧伤一次吧~ 那么.我们从scanf開始: 假如说你要将一串字符输入到一字符数组里,例如以下面程序, char a[2]; char b[3]; scanf("%s%s",a,b); printf("%s\n%s",a,b); scanf使用%s接收字符串.可是并非每个输入的字符都会被当做字符串处理.空格.tab.换行.都会被残忍的拒绝,因此输入一串"带有空格的字符串"

C Language Study - 错误的指针初始化方式

本文测试指针初始化的方式: 错误初始化方式一: int* p = NULL;//此句等于p = NULL;将指针指向了NULL这个地址,(NULL=0x0) *p = 0x10;//试图访问0x0内存,被拒绝 错误初始化方式二: int* p;//定义的时候未进行初始化,此时指针指向一块未知的内存 *p = 0x10;//试图访问未知内存,被拒绝 那么指针到底如何初始化? 初始化方式参考一: 首先定义一个相应类型的变量,我们称之为指针初始化变量,它的作用 就是用来进行指针初始化的,或者程序中可以