Code Bye

UNICODE下的一个问题

 

请教各位大大一个问题:
       我手头有个动态库,是多字节工程编写的,接口函数形式为  int func(char *)。
       现在在unicode的test工程中需要调用这个动态库的接口。调用方式如下:
       char Com[2]={0};
       func(Com);
请问:这样调用方式对吗?我看同事的代码好像就是这样写的啊,不需要进行字节转换吗?
            
        
        
                

20分
工程的字符集选择,仅仅是用来定义 UNICODE 的宏与否。
而这个宏定义,仅仅是用来定义其他的宏,诸如 TCHAR 和 GetWindowText 之类的宏。
当你使用 TCHAR 时,如果是多字节版本,那么所有的 TCHAR 都会编译器宏替换为 char ;GetWindowText 替换为 GetWindowTextA
如果是宽字符版本,那么所有的 TCHAR 都会编译器替换为 wchar_t ;GetWindowText 替换为 GetWindowTextW。

当你直接使用 char 或者 whcar_t 的时候,此时字符集就没有意义了。因为你不需要 UNICODE 宏来决定你的那些宏。

在任何字符集的工程中,你都可以使用 char 和 wchar_t 来使用的字符。

在实际使用中,你不需要关心字符集,因为你只需要选择好字符集就可以了。
但是,当你在某一段代码中,明确需要使用那个字符集,也就说,此时是不希望依赖工程的字符集,那么就使用原始的 char 或 wchar_t、StringA 或 StringW,所有的这些都有两个版本的。
当需要转换的时候,此时需要进行字符集转换。
当需要由特定的字符集到工程字符集的时候,此时需要使用 UNICODE 宏判断字符集是否一致,否则需要转换。

20分
编译好的动态库不会随你当前工程设置“多字节/Unicode”而改变。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明UNICODE下的一个问题