Freetype 2,构建视觉工作室 2015
Freetype 2, building visual studio 2015
收到以下警告:
ttgload.c(1654): warning C4312: 'type cast': conversion from 'FT_UInt' to 'void *' of greater size
这似乎很奇怪。
有问题的代码行是这样的:
if ( FT_List_Find( &loader->composites,
(void*)(unsigned long)glyph_index ) )
并宣布glyph_index
FT_UInt
.
FT_UInt
是typedef unsigned int
所以将int
转换为void*
很奇怪。
关于如何处理此警告的任何想法?
FT_UInt 是 typedef 无符号 int,因此将 int 转换为 void* 是相当奇怪的。
其实不然。它完全没问题,允许在整数和指针之间进行转换。它的一个特定应用是函数的"用户参数",您可以在其中将整数或指针与函数回调一起注册。
然而,双重类型转换(void*)(unsigned long)
是出现问题的秘诀。不能保证可能导致指针的各种问题(即未定义的行为(的sizeof(unsigned ling) >= sizeof(void*)
被截断。
当有人想要一个也可以容纳指针的整数时,使用的正确类型是 uintptr_t
和 intptr_t
.
关于如何处理此警告的任何想法?
在这种特殊情况下,它可能不会引起问题,因为该指针将被强制转换为FT_UInt。从长远来看,提交问题并更改FT_List_Find原型以接受uintptr_t
而不是指针是有意义的;不幸的是,这也将破坏许多现有程序。
相关文章:
- Visual Studio 2015:Extern "C" 和 "export" 关键字
- vs 2015 constexpr变量不恒定,但与2019相比还好吗
- 视觉工作室项目.提取源文件夹名称
- 从VS 2015更新3更新到VS2015更新3 d后浮点计算行为不同的原因
- 为什么我在尝试模板时遇到视觉工作室C++错误
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- 视觉工作室 2017;启用 /permissive 时,类型 "const wchar_t *" 的参数与类型 "PWSTR" 的参数不兼容
- VI工作室代码错误无法打开输出文件主.exe
- 与其他编译器相比,相同的代码在工作室Microsoft提供不同的输出
- remove(str.begin(), str.end(), );无法正常工作(我正在使用视觉工作室 2012)
- 如何在安卓工作室中将c ++头文件从一个文件夹导入到另一个文件夹?
- Qt Visual Studio 2015 加载项编译问题
- 在 embarcadero / RAD 工作室中的 .dfm 文件中使用常量
- 无法在视觉工作室社区 2015 中加载项目
- 英特尔并行工作室 2015 C++中的 2D 动态分配全局阵列
- 如何设置此视觉工作室 (2015) 自定义生成步骤(工具?基本上,我想要一个修改头文件(c ++)的预处理器步骤
- 2015年视觉工作室的二进制兼容性
- 类模板指针类型驱动器错误视觉工作室2015 V140
- Freetype 2,构建视觉工作室 2015
- "名称":模棱两可的符号 视觉工作室 2015