社区
C++ 语言
帖子详情
求助: 关于#ifdef _UNICODE的疑问
miniSteel
2007-05-18 02:27:10
请问"_UNICODE"是个类型名还是什么东西? 在哪里有定义, 它是怎么和Unicode码联系起来的?
...全文
1457
10
打赏
收藏
求助: 关于#ifdef _UNICODE的疑问
请问"_UNICODE"是个类型名还是什么东西? 在哪里有定义, 它是怎么和Unicode码联系起来的?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
whlwsl
2011-05-23
打赏
举报
回复
[Quote=引用 9 楼 chiyer 的回复:]
不该明白楼上的意思,这个更_DEBUG 有什么关系
我的意思是说明 _UNICODE 和 UNICODE 的区别
#ifdef _UNICODE
#ifndef UNICODE
#define UNICODE // UNICODE is used by Windows headers
#e……
[/Quote]
他只是举例而已,意思是说要你自己借助VS/VC助手去查看宏的意义,你提到的两个宏的区别自己查看完后就明白了。
星羽
2007-05-18
打赏
举报
回复
不该明白楼上的意思,这个更_DEBUG 有什么关系
我的意思是说明 _UNICODE 和 UNICODE 的区别
#ifdef _UNICODE
#ifndef UNICODE
#define UNICODE // UNICODE is used by Windows headers
#endif
#endif
#ifdef UNICODE
#ifndef _UNICODE
#define _UNICODE // _UNICODE is used by C-runtime/MFC headers
#endif
#endif
oyd
2007-05-18
打赏
举报
回复
楼上们,授人以鱼不如授人以渔
如果以后又有_DEBUG呢
楼主是还不知道如何去查看_UNICODE的定义
如果你用Visual Studio系列,去安装一个VisualAssist,它可以帮你查看_UNICODE的定义
如果你用vim/emacs系列,去查阅一下ctags/cscope的用法
星羽
2007-05-18
打赏
举报
回复
_UNICODE 是让c函数使用 unicode
UNICODE 是让api使用 unicode
珍惜生命远离CPP
2007-05-18
打赏
举报
回复
编译选项里面有 一个character set选项,这个选项控制着这个宏的定义
miniSteel
2007-05-18
打赏
举报
回复
明白了, 谢谢各位!
miniSteel
2007-05-18
打赏
举报
回复
谢谢, 那么在哪里可以找到这个宏呢?
todototry
2007-05-18
打赏
举报
回复
编译器根据定义了这个宏,对于函数进行了选择
一些api的三个名字,A(ascii),W(unicode)而你使用的时候
只写messagebox即可,编译器根据定义了这个宏与否进行函数替换
freshui
2007-05-18
打赏
举报
回复
宏
可能是自己#definde的
珍惜生命远离CPP
2007-05-18
打赏
举报
回复
_UNICODE 是个宏
如果定义了_UNICODE
那么MessageBox将被替换成MessageBoxW,因为实际上没有MessageBox这个函数的
否则MessageBox被替换成MessageBoxA
MessageBoxA 使用的是 ascii类型的参数
MessageBoxW 使用的是 unicode类型参数
笔记:关于#if
def
xxx_GLOBALS语句的用法
语句格式: #if
def
xxx_GLOBALS #
def
ine xxx_EXT #else #
def
ine xxx_EXT extern #endif 语句说明: 定义全局变量,避免在.c和.h文件中重复定义。 1.若在.c文件中有如下定义: #
def
ine xxx_GLOBALS 则编译器在处理该文件时,强制xxx_EXT为空,所以会给每个全局变量分配内存空间。 2.在处理其他.c文件时,xxx_GLOBALS未定义,则xxx_EXT被定义为extern,这种情况下不产生内存分配,任何.c
#if
def
__cplusplus语句不生效分析
#if
def
__cplusplus语句不生效分析 一个C编写的项目到VS2019中进行编译时,发现头文件里面#if
def
__cplusplus语句不生效,导致编译出错。百度和谷歌均查了一下,发现没有相关的问题解答。后面经过自析,发现是因为开源库提供的源文件是.c类型的,自己创建的项目是C++空项目,随后将.c后缀改成.cpp后缀#if
def
__cplusplus生效,编译报错得到解决。 此小问题反映出VS对待.c和.cpp文件还是有很大的差异,平时注意C和C++之间的区别,防止出现这种很低级的错误。
#if
def
__cplusplus解释
#if
def
__cplusplus extern “C” { #endif // Code #if
def
__cplusplus } #endif 在C++编译器中,已经内置了__cplusplus这个宏定义,所以在使用C++编译器编译其它语言(比如C语言)时,用这样的方式,可以让编译器把extern “C” 代码块中的内容按照C语言的方式进行编译。如果不加extern “C”限制按照C语言的方式进行编译,那么C++编译器在编译C语言函数时可能就会找不到链接路径而报错。 在C++中,为了支持重
#if
def
_cplusplus(转)
时常在cpp的代码之中看到这样的代码: #if
def
__cplusplus extern "C" { #endif //一段代码 #if
def
__cplusplus } #endif 这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代码,那么加入extern "C"{和}处理其中的代码。 要明白为何使用extern "C",还得
#if
def
__cplusplus extern “C” { #endif的作用!
#if
def
__cplusplus extern “C” { #endif //代码 #if
def
__cplusplus } #endif 解释: (1)cpp中对函数的重载处理。在c++中,为了支持重载机制,在编译生成的汇编码中,要对函数的名字进行一些处理,加入比如函数的返回类型等等.而在C中,只是简单的函数名字而已,不会加入其他的信息.也就是说:C++和C对产生的函数名......
C++ 语言
65,187
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章