USES_CONVERSION W2A

Posted wllwqdeai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了USES_CONVERSION W2A相关的知识,希望对你有一定的参考价值。

https://blog.csdn.net/thanklife/article/details/70208841

USES_CONVERSION的使用和注意

1. 使用ATL的W2A和A2W宏必须使用USES_CONVERSION
2. USES_CONVERSION是用来转换类型的,比如我们很常见的问题:
    在Socket编程时候,我们的IP地址从界面上输进去一般都使用CString类型的,可是在SOCKADDR_IN中的inet_addr却是const char *我们就不能直接用CString来用。我们就可以使用T2A()宏了。
    SOCKADDR_IN localaddr;   
    CString m_IP = L"192.168.1.2";
    USES_CONVERSION;
    localaddr.sin_family = AF_INET;
    localaddr.sin_addr.S_un.S_addr = inet_addr(T2A(m_IP));
 
3. 当然使用USES_CONVERSION也是要注意一个很重要的问题。
USES_CONVERSION它是在堆栈上分配空间的,也就是说你在你使用的函数未结束就不会被释放掉。
所有要注意不要在一个函数中用while循环执行它,不然栈空间就马上会分配完(栈空间一般只有2M,很小)。

4. USES_CONVERSION是ATL中的一个宏定义。用于编码转换(用的比较多的是CString向LPCWSTR转换)。在ATL下使用要包含头文件#include "atlconv.h"

5. 使用USES_CONVERSION一定要小心,它们从堆栈上分配内存,直到调用它的函数返回,该内存不会被释放。如果在一个循环中,这个宏被反复调用几万次,将不可避免的产生stackoverflow。

 












以上是关于USES_CONVERSION W2A的主要内容,如果未能解决你的问题,请参考以下文章

markdown 문자열타입변환:USES_CONVERSION

判断文件存在与编码方式

CString转char*实现方法

在Pictrue控件上画图片

unicode下char*和CString

VS2013 中 CString类型转换为LPCSTR类型