- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一堆从网络获取二进制Blob的代码。到目前为止,在了解Blob的类型时,我使用了punning类型(伪):
uint8_t* data = network.get();
if(type == "A") {
uint32_t* var = reinterpret_cast<uint32_t*>(data);
...
} else if (type == "B") {
float* var = reinterpret_cast<float*>(data);
...
}
union A {
float valf;
uint32_t valu;
};
最佳答案
Q1: Is there a way to test if type punning is supported and behaves as expected on my platform?
-f-no-strict-aliasing
阻止它在优化过程中利用该UB。
Q2: Can I expect mainstream compilers (MSVC, GCC) to warn or error on illegal type punning on my platform?
关于c++ - 如何判断我平台上的punning类型是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62402895/
我最近承担了 Photon 中自定义属性的任务。我已经能够弄清楚如何设置自定义属性,但无法获取自定义属性。我的哈希表在我的播放器 Controller 脚本中,而我设置(以及我想要获取)属性的位置在循
我想知道,从指向不完整类型的指针或从指针强制转换是否是未定义的行为? struct _obj; typedef _obj obj; typedef struct{ int val; } obj
用 Swift 编写,我有一个特定的需求,可能是类型双关的候选者。我正在从磁盘镜像中读取文件,它们存在于连续的 512 字节扇区中。文件以 Data 的形式从磁盘中脱离出来struct 很容易转换为字
我正在使用 MinGW 在 Windows 上从源代码编译 Go。运行 make.bat 时,出现以下错误: # Building C bootstrap tool. cmd/dist cmd/dis
我已经对类似主题和一些与之相关的 Material 进行了一些查询。 但我的查询主要是为了了解以下代码的警告。我不想修复!! 我理解有两种方式,一个 union 或使用 memcpy . uint32
我正在使用 C# 在 PC 上开发 Unity 游戏应用程序,使用 Visual Studio Code 作为编辑器。这些应用程序针对 PC 和 Android。多人游戏使用 Photon Pun 2
我正在编写一组 C 代码来优化它。我在修复损坏的代码时遇到警告。 环境是Linux,C99,使用-Wall -O2标志进行编译。 最初,结构体文本的定义如下: struct text {
我的 cast 行代码中有此警告: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict- alia
我使用一个 QueryInterface 函数,它会根据 IID 返回给定接口(interface)上的指针。 DecodingFramework::IVariableFramerate* pInt
我有一些代码使用类型双关来避免必须调用成员“对象”的构造函数和析构函数,除非/直到它确实需要使用该对象。 它工作正常,但在 g++ 4.4.3 下,我收到了这个可怕的编译器警告: jaf@jeremy
#define HTON_I32(x) htonl(x) inline float __HTON_F32(float x) { int i = HTON_I32(*((int *)(&x)
我使用了一个将 enum* 转换为 int* 的代码。像这样的: enum foo { ... } ... foo foobar; int *pi = reinterpret_cast(&foobar
int test_malloc(void **ptr, size_t size) { (*ptr) = malloc(size); return 0; } int test_ap
我已经尝试阅读 SO 上具有类似标题的其他问题,但它们都太复杂了,我无法将解决方案(甚至解释)应用于我自己的问题,似乎具有更简单的性质。 在我的例子中,我有一个围绕 free() 的包装器它将指针设置
这个问题在这里已经有了答案: "dereferencing type-punned pointer will break strict-aliasing rules" warning (5 个答案)
我编写的代码在 GCC 4.9、GCC 5 和 GCC 6 中没有警告。它在一些较旧的 GCC 7 实验快照(例如 7-20170409)中也没有警告。但在最近的快照(包括第一个 RC)中,它开始产生
在函数中 size_t csps_socket_read(csps_socket_t *s, csps_packet_wrapper_t *packet, size_t sz) 我收到警告:“解引用类
我在一些遗留的源代码中有一行: #define MAXMSG 1024 ... char m_recvBuf[MAXMSG]; unsigned int msgLength = ntohl(*((un
背景 通过 union 讨论类型双关的大多数未定义或实现定义的性质通常引用以下位,这里通过@ecatmur ( https://stackoverflow.com/a/31557852/2757035
我是一名优秀的程序员,十分优秀!