当前位置: 首页 > news >正文

住房和城乡建设部官方网站已本地主机做网站

住房和城乡建设部官方网站已,本地主机做网站,二十个优化,wordpress企业站主题下载地址转自#xff1a;C,C宏中#与##的讲解 - MoreWindows - 博客园 文中__FILE__与示例1可以参见《使用ANSI C and Microsoft C中常用的预定义宏》 宏中的#的功能是将其后面的宏参数进行字符串化操作#xff08;Stringizing operator#xff09;#xff0c;简单说就是在它引用的…转自C,C宏中#与##的讲解 - MoreWindows - 博客园 文中__FILE__与示例1可以参见《使用ANSI C and Microsoft C中常用的预定义宏》 宏中的#的功能是将其后面的宏参数进行字符串化操作Stringizing operator简单说就是在它引用的宏变量的左右各加上一个双引号。 如定义好#define STRING(x) #x之后下面二条语句就等价。 char *pChar  hello; char *pChar  STRING(hello); 还有一个#是加单引号Charizing Operator #define makechar(x)  #x char ch  makechar(b);与char ch  b;等价。 但有小问题要注意宏中遇到#或##时就不会再展开宏中嵌套的宏了。什么意思了比如使用char *pChar  STRING(__FILE__);虽然__FILE__本身也是一个宏但编译器不会展开它所以pChar将指向__FILE__而不是你要想的形如D:\XXX.cpp的源文件名称。因此要加一个中间转换宏先将__FILE__解析成D:\XXX.cpp字符串。 定义如下所示二个宏 #define _STRING(x) #x #define STRING(x) _STRING(x) 再调用下面语句将输出带的源文件路径 char* pChar  STRING(__FILE__); printf(%s %s\n, pChar, __FILE__); 可以比较下STRING(__FILE__)与__FILE__的不同前将带双引号后一个没有双引号。 再讲下##的功能它可以拼接符号Token-pasting operator。 MSDN上有个例子 #define paster( n ) printf( token#n %d\n, token##n ) int token9  100; 再调用  paster(9);宏展开后token##n直接合并变成了token9。整个语句变成了 printf( token9 %d, token9 ); 在C语言中字符串中的二个相连的双引号会被自动忽略于是上句等同于 printf(token9 %d, token9);。 即输出token9 100 有了上面的基础后再来看示例1 #define WIDEN2(x) L ## x #define WIDEN(x) WIDEN2(x) #define __WFILE__ WIDEN(__FILE__) wchar_t *pwsz  __WFILE__; 第一个宏中的L是将ANSI字符串转化成unicode字符串。如wchar_t *pStr  Lhello; 再来看wchar_t *pwsz  __WFILE__; __WFILE__被首先展开成WIDEN(__FILE__)再展开成WIDEN2(__FILE__表示的字符串)再拼接成 L__FILE__表示的字符串 即LD:\XXX.cpp 从而得到unicode字符串并取字符串地址赋值给pwsz指针。 在VC中_T()TEXT ()也是用的这种技术。 在tchar.h头文件中可以找到 #define _T(x)       __T(x) #define __T(x)      L ## x 在winnt.h头文件中可以找到 #define TEXT(quote) __TEXT(quote)   // r_winnt #define __TEXT(quote) L##quote      // r_winnt 因此不难理解为什么第三条语句会出错error C2065: LszText : undeclared identifier wprintf(TEXT(%s %s\n), _T(hello), TEXT(hello)); char szText[]  hello; wprintf(TEXT(%s %s\n), _T(szText), TEXT(szText)); 而将hello定义成宏后就能正确运行。 #define SZTEXT hello wprintf(TEXT(%s %s\n), _T(SZTEXT), TEXT(SZTEXT)); 注由于VC6.0默认是ANSI编码因此要先设置成unicode编码在project菜单中选择Setting再在C/C标签对话框中的Category中选择Preprocessor。再地Preprocessor definitions编辑框中将_MBCS去掉加上_UNICODE,UNICODE。  更多内容可以查考MSDN上对Preprocessor Operators的讲解。 转载请标明出处原文地址C,C宏中#与##的讲解 - MoreWindows - 博客园
http://www.yutouwan.com/news/117584/

相关文章:

  • 公关策划公司网站源码能进入各种网站的浏览器
  • 长沙做网站seo公司吉林省城乡建设厅网站6
  • 住房城乡建设网站查询百度帐号登录
  • 无忧中英繁企业网站系统通用版什么网站做新产品代理
  • 网站优化及推广方案如何用网络推广自己的公司
  • 杭州网站建设源码成都APP,微网站开发
  • 网站焦点图制作教程分类信息网站系统cms
  • 免费做网站平台3340网站建设与管理
  • 网站开发用什么好广州越秀区儿童医院
  • 网站建设优化及推广四面山网站建设
  • 江苏省建设集团有限公司网站通州区建设局网站
  • 网站域名怎么转惠州网络问政平台官网
  • 直播视频怎么录制漯河seo
  • 合肥网上商城网站建设dede 学校网站
  • 各类网站推广侧边导航条wordpress
  • wordpress电脑主题郑州专业seo首选
  • 北京网站建设公司 蓝纤科技重庆专业建网站
  • 微网站建设最新报价凡科快图在线制作免费
  • html5门户网站模板wordpress更知鸟
  • 廊坊网站定制开发山西常见网站建设推荐优化
  • 包装模板网站上海到北京专线物流
  • 信阳网站建设汉狮怎么样华为云和wordpress
  • 桂林相关网站深圳宝安区深圳网站建设 骏域网络
  • 网站建设与制作实训报告局域网内实现域名访问
  • 中文小说网站建设与维护广州网络营销公司
  • 优秀网站建设公司响应式网站好么
  • 当雄网站建设辉县网站建设
  • 杭州网站建设技术支持重庆造价工程建设信息网站
  • 可以做装修效果图的网站有哪些app界面生成器
  • 沧州网站建设公司jsp网站开发的教材