zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    git简单使用
    简单Spring和mybatis整合配置文件
    ASP.NET程序开发范例宝典
    C# DataSet和DataTable详解
    AOP
    匿名内部类
    数据库事务
    mybatis
    线程池
    单例模式
  • 原文地址:https://www.cnblogs.com/wllwqdeai/p/10010378.html
Copyright © 2011-2022 走看看