社区
C语言
帖子详情
C语言中##表示什么意思?
shellfish567
2010-01-13 11:56:17
例如:
#define con_lo(x,y) x##yy
#if defined(ARRAYS)
#define locals(x,y) x[8],y[8]
#else
#define locals(x,y) x##0,x##1,x##2,x##3,x##4,x##5,x##6,x##7,\
y##0,y##1,y##2,y##3,y##4,y##5,y##6,y##7
#end if
#可以用来连接字符串,##就不知道了……望指点下哈,立即给分
...全文
8932
5
打赏
收藏
C语言中##表示什么意思?
例如: #define con_lo(x,y) x##yy #if defined(ARRAYS) #define locals(x,y) x[8],y[8] #else #define locals(x,y) x##0,x##1,x##2,x##3,x##4,x##5,x##6,x##7,\ y##0,y##1,y##2,y##3,y##4,y##5,y##6,y##7 #end if #可以用来连接字符串,##就不知道了……望指点下哈,立即给分
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shanleichicheng
2010-12-08
打赏
举报
回复
Thanks!!!
shellfish567
2010-01-13
打赏
举报
回复
谢谢哈~。~版主你分多就不给了哈,给一楼了~。~
swl82560397pq
2010-01-13
打赏
举报
回复
mark
猫已经找不回了
2010-01-13
打赏
举报
回复
5
http://blog.csdn.net/hairetz/archive/2009/11/08/4785047.aspx
以前转过一篇,好好看下,蛮有用的。
1. 宏可以像函数一样被定义,例如:
#define min(x,y) (x 但是在实际使用时,只有当写上min(),必须加括号,min才会被作为宏展开,否则不做任何处理。
2. 如果宏需要参数,你可以不传,编译器会给你警告(宏参数不够),但是这会导致错误。如C++书籍中所描
述的,编译器(预处理器)对宏的语法检查不够,所以更多的检查性工作得你自己来做。
3. 很多程序员不知道的#和##
#符号把一个符号直接转换为字符串,例如:
#define STRING(x) #x
const char *str = STRING( test_string ); str的内容就是"test_string",也就是说#会把其后的符号
直接加上双引号。
##符号会连接两个符号,从而产生新的符号(词法层次),例如:
#define SIGN( x ) INT_##x
int SIGN( 1 ); 宏被展开后将成为:int INT_1;
4. 变参宏,这个比较酷,它使得你可以定义类似的宏:
#define LOG( format, ... ) printf( format, __VA_ARGS__ )
LOG( "%s %d", str, count );
__VA_ARGS__是系统预定义宏,被自动替换为参数列表。
5. 当一个宏自己调用自己时,会发生什么?例如:
#define TEST( x ) ( x + TEST( x ) )
TEST( 1 ); 会发生什么?为了防止无限制递归展开,语法规定,当一个宏遇到自己时,就停止展开,也就是
说,当对TEST( 1 )进行展开时,展开过程中又发现了一个TEST,那么就将这个TEST当作一般的符号。TEST(1)
最终被展开为:1 + TEST( 1) 。
liao05050075
2010-01-13
打赏
举报
回复
1
#define中的 #与##
#define GPEBLT_FUNCNAME(basename) (SCODE (GPE::*)(struct GPEBltParms *))&GPE::##basename
在#define中,标准只定义了#和##两种操作。#用来把参数转换成字符串,##则用来连接两个前后两个参数,把它们变成一个字符串。
#include <stdio.h>
#define paster( n ) printf( "token " #n" = %d\n ", token##n )
int main()
{
int token9=10;
paster(9);
return 0;
}
输出为
[leshy@leshy src]$ ./a.out
token 9 = 10
http://baike.baidu.com/view/1611565.htm
c语言
中
?:是
什么意思
?
一、
c语言
中
?:是
什么意思
? ?在
C语言
中
表示
疑问的意思 :在
C语言
中
表示
判断的结果选择 二者一同时出现,两者组成结构选择语句。 条件运算符(?:)是
C语言
中
唯一的一个三目运算符,它是对第一个表达式作真/假检测,然后根据结果返回另外两个表达式
中
的一个。 二、使用步骤 1.引入库 代码如下(示例): 2.读入数据 代码如下(示例): data = pd.read_csv( 'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
C语言
中
的#和##
表示
的意义
前两天看到另外这么一道面试题:
C语言
中
的#和##是用来干什么的? 通过查资料今天给大家说一下: 首先,我们平常在
C语言
中
写的‘#’就是将其后面的宏参数变成一个字符串,而‘##’是将两个宏参数粘合在一起。具体使用看下面: #include <iostream> #include <stdio.h> using namespace std; #define Fin(...
c语言
各个符号代表作用啥意思,
C语言
中
#和##符号有什么样的作用
描述1、#的预处理作用预处理过程实质上是处理“#”,包括:将#include包含的头文件直接拷贝到.c当
中
;将#define定义的宏进行替换;将#if #else #endif定义的无用代码过滤掉;将代码
中
没用的注释部分删除等。从而生成一个没有宏定义、没有条件编译指令、没有特殊符号的输出文件。上面
中
符号“#”
表示
这是一条预处理命令,凡是以“#”开头的一般均为预处理命令,比如:#include:是包...
c语言
- -,
C语言
中
的#和##
在
C语言
中
,#和##都是预处理指令。#
表示
的是将参数转换为字符串##
表示
黏贴,但是只能黏贴
C语言
除了关键字以外的合法标识符。在单一的宏定义
中
,最多可以出现#和##的组合形式。我们来看看一个例子:#include typedef int INT_32 ;typedef void NULL_val ;#define pri(x) printf("%d\n",x)#define P(x) ...
C语言
% x的作用,关于
c语言
%#X意思大全
【导读】
c语言
%#X是
什么意思
,下面就是语录说小编整理的唯美句子,来看看吧!在printf函数打印格式
中
,%X是以十六进制打印,并且a~f打印出来的是大写的A. B. C. D. E. F如果是%#X,则会在打印的十六进制结果前面加上0X
c语言
中
~x是
什么意思
在
C语言
中
,~x代表的意思是按位取反的意思。使用~进行按位取反时,将某个数x的二进制的每一个bit取反即可得到~x的值。如~0x37,即~(...
C语言
70,014
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章