- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将一个使用 ATL/MFC 的 Visual C++ 项目从 VS2010 迁移到 VS2013。该项目使用 /J
编译(“假设 char
是无符号的”),并且有太多代码可能会或可能不会依赖于该事实来轻松删除编译器标志。
VS2013下,/J
在 atldef.h 中导致编译器错误:ATL doesn't support compilation with /J or _CHAR_UNSIGNED flag enabled
.这可以通过定义 _ATL_ALLOW_UNSIGNED_CHAR
来抑制。 .微软提到这个 in the MSDN documentation for /J
,以及含糊的声明:“如果您将此编译器选项与 ATL/MFC 一起使用,则可能会生成错误。尽管您可以通过定义 _ATL_ALLOW_CHAR_UNSIGNED 来禁用此错误,但此解决方法不受支持,并且可能并不总是有效。”
有谁知道在什么情况下使用安全或不安全_ATL_ALLOW_CHAR_UNSIGNED
?
最佳答案
微软努力保持古老的代码库,如 ATL,与编译器的变化兼容。这里的主要麻烦制造者是 AtlGetHexValue()功能。它有一个设计错误:
The numeric value of the input character interpreted as a hexadecimal digit. For example, an input of '0' returns a value of 0 and an input of 'A' returns a value of 10. If the input character is not a hexadecimal digit, this function returns -1.
关于visual-c++ - _ATL_ALLOW_UNSIGNED_CHAR 什么时候起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27246149/
我正在将一个使用 ATL/MFC 的 Visual C++ 项目从 VS2010 迁移到 VS2013。该项目使用 /J 编译(“假设 char 是无符号的”),并且有太多代码可能会或可能不会依赖于该
我是一名优秀的程序员,十分优秀!