gpt4 book ai didi

c++ - Windows MSG 结构与遗留项目代码结构 MSG 冲突

转载 作者:行者123 更新时间:2023-11-30 18:49:55 29 4
gpt4 key购买 nike

我当时正在开发一个在 Linux 上运行了 20 多年的遗留代码。它有3个模块,由3个不同的人处理。我只能更改一个模块。

现在我的任务是在 Windows 中构建具有最少功能的相同代码。

对于进程间通信,使用消息结构。并且与windows MSG结构冲突。

此结构也在其他两个模块中使用。

我不想重命名该结构。有没有其他方法可以解决这个问题?

代码是 C 和 C++ 的混合。

最佳答案

不是真的。单一定义规则规定每个名称都应该有唯一的定义,并且您现有的 ::MSG 定义与 <Windows.h> 不匹配::MSG 的定义。

Windows 编译器不会严格执行 ODR,因此您可能会侥幸逃脱。通常,您可以通过硬区分这两种类型来实现此目的。也就是说,在一个.cpp文件中包含windows.h ,您不能包含任何项目标题,反之亦然。两个部分之间的接口(interface)必须在其自己的 header 中定义,该 header 既不依赖于 windows.h 也不依赖于您自己的 header 。 (作为附带好处,您可以为 Linux 提供该 .cpp 文件的替代实现,这意味着您的代码不会充斥 #ifdef WIN32 )

关于c++ - Windows MSG 结构与遗留项目代码结构 MSG 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41456926/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com