Windows MSG 结构与旧项目代码结构 MSG 冲突
Windows MSG structure conflicts with legacy project code struct MSG
我正在研究一个在Linux上运行了20多年的遗留代码。它有3个模块,由3个不同的人处理。我只能在一个模块中更改。
现在我有一个任务,即在功能最少的窗口中构建相同的代码。
对于进程间通信,使用消息结构。它与Windows MSG结构冲突。
这种结构也用于其他两个模块。
我不想重命名结构。还有其他方法可以解决这个问题吗?
代码是 C 和 C++ 的混合。
不是真的。一个定义规则指出,每个名称都应具有唯一的定义,并且您现有的::MSG
定义与::MSG
的<Windows.h>
定义不匹配。
Windows编译器不倾向于严格执行ODR,因此您可能会侥幸逃脱。通常,您可以通过在两种类型之间进行硬分离来执行此操作。也就是说,在包含 windows.h
的.cpp文件中,您不能包含任何项目标题,反之亦然。这两个部分之间的接口必须在其自己的标头中定义,该标头既不依赖于 windows.h 也不依赖于您自己的标头。(作为附带的好处,您可以为 Linux 提供该.cpp文件的替代实现,这意味着您的代码不会充斥着#ifdef WIN32
)
相关文章:
- 如何循环打印顶点结构
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 预处理器:插入结构名称中的前一个行号
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 孤立代码块在结构中引发异常
- 有什么方法可以遍历结构吗
- 如何在 C# 中映射双 C 结构指针?
- 如何在C++中使用结构生成映射
- 无法将结构注册为增强几何体3D点
- 多成员Constexpr结构初始化
- C++将文本文件中的数据读取到结构数组中
- 如何重构类层次结构以避免菱形问题
- 如何在C++中序列化结构数据
- std::vector的包装器,使数组的结构看起来像结构的数组
- 没有为自己的结构调用列表推回方法
- 奇怪的结构&GCC&clang(void*返回类型)
- Windows MSG 结构与旧项目代码结构 MSG 冲突
- MSG结构的用途是什么?它的参数代表什么
- CAN-BUS通信-MSG结构(Winuser.h)Linux等效