VC中一个关于宏的使用问题 A2W W2A

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

VC中一个关于宏的使用问题

文/赵湘宁

    这儿是个关于宏的问题,我曾用过ATL的串转换宏,包括W2A,开始有些东西我还不太明白。为了使用这些宏,必须在函数的开始处用USES_CONVERSION来初始化某些局部变量。用就用吧,但是看看这个宏的定义,它有类似下面的代码:
// 在atlconv.h文件中
#define USES_CONVERSION /
int _convert; _convert; /
UINT _acp = GetACP(); _acp; /
LPCWSTR _lpw; _lpw; /?
LPCSTR _lpa; _lpa
为什么它们用“int x;x;”——这种后面跟着变量的声明? 

    很多人都碰到过这个令人困惑的问题,后来发现答案很简单:禁止编译器的警告信息(warning)。如果单独有一行代码:
int x;
且从来没有使用过x,那么编译器汇报错“unreferenced local variable:x”,意思是未引用过的局部变量x,如果将警告信息的输出调到最大。为了避免讨厌的警告,USES_CONVERSION引用声明的变量。
      int x; // 声明 
x; // 使用这个变量
在C++之前的时代,程序员有时在C中用函数形参做同样的事情来避免“unreferenced formal parameter”或其它的深奥费解的编译错误。
void MyFunc(int x, char y)
{
x;
y;
......
}
当然,现在用下面的代码可以更有效地完成同样的事情:
// 参数 x 不是用
void MyFunc(int /* x *
windows 区域格式设置非中文时,W2A转换编码错误 windows 区域格式 转换编码 阅读详情

相关推荐

解决T2A W2A A2W的报错error C2065: “_lpw”: 未声明的标识符

当直接使用T2A W2A A2W,在编译时会出现报错:error C2065: “_lpw”: 未声明的标识符 等 解决方法: 增加头文件  #include 并在使用T2A等前加上语句 USES_CONVERSION;

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 4071

MFC中一段经典的http协议post图片代码出现中文的错误分析 (转)

使用VC进行图片上传到服务器,就是构造http的协议包。有段经典的代码,在网上流传并使用。链接如下: http://blog.chinaunix.net/u3/94574/showart_1950658.html http://read.pudn.com/downloads98/sourcecode/internet/tcp_ip/401601/HotpimUploadDlg.cpp__...

dengxu4495的博客 228

VC9中ATL的atlconv.h中A2W_CP和W2A_CP的Bug

 VC9中ATL的atlconv.h有Bug,请大家注意一下,这些问题网上也能搜索到:http://blog.csdn.net/BalonFan/archive/2009/04/24/4108985.aspx,但它对EX系列的转换理解错了。我这里澄清一下:W2A_CP转换,allocate分配的空间大小对(它原来只固定乘2),但当cp为UTF8时,是有可能一个汉字转换

冰峰 的专栏 5709

A2W和W2A 很好的多字节和宽字节字符串的转换

A2W和W2A 很好的多字节和宽字节字符串的转换

gdruhv的博客 5205

USES_CONVERSION与字节转换A2W、W2A、A2T、 T2A

本文介绍了ATL中的USES_CONVERSION及其相关编码转换方法。该用于多字节与宽字节间的转换(如W2A、A2W),需包含atlconv.h头文件。使用时需注意其基于栈内存分配的特性,在循环中反复调用可能导致栈溢出。文章提供了两种解决方案:编写独立转换函数或将转换代码移至子函数中处理。同时对比了多字节(GBK、UTF-8)和宽字节(Unicode)编码特点,建议根据场景选择字符集,以及ATL中A2W、W2A、A2T、T2A等使用方法。

Eaacdz的博客 316

W2A等使用

vc中做开发经常会遇到宽字节字符串和char[]之间的转换。MS提供了函数WideCharToMultiByte和MultiByteToWideChar函数供实现其转换,但是每次都要调用两次才能完成转换。 另外在头文件atlconv.h中定义了W2A()和A2W()可以一次完成转换。其使用方法如下: char sz[] = "string"; USES_CONVERSION; A2W(

ghy429090的专栏 4246

A2W和W2A :很好的多字节和宽字节字符串的转换

 作者:朱金灿来源:http://blog.csdn.net/clever101         以前看《Window核心编程》,感觉多字节和宽字节之间还比较麻烦的,至少MultiByteToWideChar函数和WideCharToMultiByte函数有足够多的参数的意义让我们去理解。近日接触了ATL的一个很好的字符串的转换:A2W和W2A。        用

clever101的专栏 1万+

详细介绍A2W()函数

书籍:《Visual C++ 2017从入门到精通》的2.7 字符串环境:visual studio 2022内容:char*转为CStringA2W() 是 ATL(Active Template Library)提供的,用于将多字节字符(char*转换为宽字符(wchar_t*,适用于 ​。

felicity_one的博客 992

关于A2W字符转换

一个函数的循环体中使用A2W等字符转换可能引起栈溢出。#include void fn(){    while(true)    {        {            USES_CONVERSION;            DoSomething(A2W("SomeString"));        }    }}让我们来分析以上的转换#define A2W(lpa) (/

jia_xiaoxin的专栏 1627

VC一个关于使用问题

VC一个关于使用问题 分享到:新浪微博腾讯微博更多15 收藏 发布日期: 2001-02-28 08:01 浏览次数: 9135次 标  签: C++,windows 文章评分: 5.0 操  作: 打印 赵湘宁 称号:未设置 简介:... 文章概要: 这儿是

李秀国的专栏 628

VC一个关于使用问题(转载)

vc使用

lllxy的专栏 792
上一篇: printf 中文
下一篇: printf输出__int64的值
strikebone
博客等级 码龄23年 6粉丝 48原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值