windows核心编程第五版 unicode

ithzhang
博客专家认证
2011-09-07 03:39:34
第14页有一句代码:#ifdef UNICODE
所谓的定义UNICODE是什么意思!是系统定义还是由用户自己定义!谢谢!
...全文
212 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
ithzhang 2011-10-07
  • 打赏
  • 举报
回复
是在编译器里设置当前编译器是否支持UNICODE。vc6.0默认不支持。vc2010默认是支持的。
ithzhang 2011-09-10
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 golden_shadow 的回复:]
引用 16 楼 ithzhang 的回复:

引用 12 楼 machh 的回复:

楼主这个时候看 核心编程, 还有点早, 看点别的吧.
我们以这个做教材,不学不行啊!
一学期学完?习题哪来的?
[/Quote]一学期学完,没有习题啊。就是上课讲讲然后上机。
Golden_Shadow 2011-09-10
  • 打赏
  • 举报
回复
回复楼上,了解。
酱油专业户 2011-09-09
  • 打赏
  • 举报
回复
貌似有这么一个例子:
貌似是要得到光标的坐标吧,
sprintf(str,"%d,%d",a,b);
TextOut(hdc,5,5,str,lstrlen(str));
如果你定义char那么Textout就会报错,
定义TCHAR那么sprintf就会报错,这个就是那个unicode的问题了.....
所以最好把unicode给关了,省事.....
ringer564597 2011-09-09
  • 打赏
  • 举报
回复
看第二章。有unicode和_Unicode。
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ithzhang 的回复:]

引用 5 楼 akirya 的回复:
引用 4 楼 ithzhang 的回复:

引用 2 楼 akirya 的回复:
先把这一章看完。
我已经看到第九章了。只是回来复习复习。还是不明白。

基本上可以确定,你没怎么看
涉及到字符串的API基本上都提供了2套
如 MessageBoxA MessageBoxW
根本没有MessageBox这个API ,用到的MessageBo……
[/Quote]
你想用unicode版的,就在工程选项中 预处理器中 定义这个宏。

找不到的话,在所有的.c .cpp文件的第一行写下
#define UNICODE
programer.M 2011-09-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 luciferisnotsatan 的回复:]

C/C++ code
#ifdef _UNICODE

#ifdef __cplusplus
} /* ... extern "C" */
#endif

/* ++++++++++++++++++++ UNICODE ++++++++++++++++++++ */

#include <wchar.h>

#ifdef __cplusplus
extern "C" {
#endif……
[/Quote]

宏,编译器内部的宏
Golden_Shadow 2011-09-09
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 ithzhang 的回复:]

引用 12 楼 machh 的回复:

楼主这个时候看 核心编程, 还有点早, 看点别的吧.
我们以这个做教材,不学不行啊!
[/Quote]一学期学完?习题哪来的?
only_lonely 2011-09-09
  • 打赏
  • 举报
回复
从来只用wchar_t 不用 TCHAR 的路过。
ithzhang 2011-09-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 akirya 的回复:]
引用 4 楼 ithzhang 的回复:

引用 2 楼 akirya 的回复:
先把这一章看完。
我已经看到第九章了。只是回来复习复习。还是不明白。

基本上可以确定,你没怎么看
涉及到字符串的API基本上都提供了2套
如 MessageBoxA MessageBoxW
根本没有MessageBox这个API ,用到的MessageBox是个宏。
如果定义了UNICODE那么……
[/Quote]这都明白,我就是不知道定义UNICODE在哪里定义。
luciferisnotsatan 2011-09-08
  • 打赏
  • 举报
回复
#ifdef  _UNICODE

#ifdef __cplusplus
} /* ... extern "C" */
#endif

/* ++++++++++++++++++++ UNICODE ++++++++++++++++++++ */

#include <wchar.h>

#ifdef __cplusplus
extern "C" {
#endif

#ifndef _WCTYPE_T_DEFINED
typedef unsigned short wint_t;
typedef unsigned short wctype_t;
#define _WCTYPE_T_DEFINED
#endif

#ifndef __TCHAR_DEFINED
typedef wchar_t _TCHAR;
typedef wchar_t _TSCHAR;
typedef wchar_t _TUCHAR;
typedef wchar_t _TXCHAR;


_UNICODE就是一个宏。
工程属性里,Character set选Use Unicode Character Set,就设置了这个宏。当然也可以用别的方法设置
至善者善之敌 2011-09-08
  • 打赏
  • 举报
回复
那就再看一遍,俗话说书读百遍,其意自显
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ithzhang 的回复:]

引用 2 楼 akirya 的回复:
先把这一章看完。
我已经看到第九章了。只是回来复习复习。还是不明白。
[/Quote]
基本上可以确定,你没怎么看
涉及到字符串的API基本上都提供了2套
如 MessageBoxA MessageBoxW
根本没有MessageBox这个API ,用到的MessageBox是个宏。
如果定义了UNICODE那么就会替换成MessageBoxW
否则就是MessageBoxA
ithzhang 2011-09-08
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 machh 的回复:]

楼主这个时候看 核心编程, 还有点早, 看点别的吧.
[/Quote]我们以这个做教材,不学不行啊!
chaochupin 2011-09-08
  • 打赏
  • 举报
回复
没看过这书,看这个需要先看什么呢
Golden_Shadow 2011-09-08
  • 打赏
  • 举报
回复
得到分.同在看此书.
peijicheng 2011-09-08
  • 打赏
  • 举报
回复
路过,学习一下。本人去年也看过此书,感触颇深!
lcyw 2011-09-08
  • 打赏
  • 举报
回复
楼主这个时候看 核心编程, 还有点早, 看点别的吧.
赵4老师 2011-09-08
  • 打赏
  • 举报
回复
在编译开关即编译程序的命令行里面定义。
《编译原理》
《程序员的自我修养——链接、装载与库》
luciferisnotsatan 2011-09-08
  • 打赏
  • 举报
回复
编译开关里指定的
/D "_UNICODE"

VS2005里
只要你在项目属性的
Configuration Properties->Character set里选Use Unicode Character Set,就会在命令行里加入上面那个宏的定义
加载更多回复(5)

65,189

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧