| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1172 人关注过本帖
标题:编译器不支持C++11
只看楼主 加入收藏
rohalloway
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:97
专家分:405
注 册:2018-9-28
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:1 
编译器不支持C++11
程序代码:
bool MemoryHack::Hook(void* addr, const void* jumpTo, size_t len, bool JMPt_or_CALLf)
{
    #pragma pack(push, 1)
            struct
            {
                uint8_t opcode;
                uint32_t offset;
            } *ins = static_cast<decltype(ins)>(addr);
    #pragma pack(pop)
}


我的项目不支持C++11标准,请问*ins = static_cast<decltype(ins)>(addr);这句应该如何更改,

非常感谢!
搜索更多相关主题的帖子: bool 编译器 void C++ addr 
2021-02-09 18:14
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:20 
程序代码:
    #pragma pack(push, 1)
            struct foo
            {
                uint8_t opcode;
                uint32_t offset;
            };
            foo* ins = (foo*)addr;
    #pragma pack(pop)

但我认为这违法了“严格别名”规则,属于未定义行为。
应该使用 std::bit_cast 来转化,但你的编译器连C++11都不支持的话,那可以用 memcpy 来做。
2021-02-10 09:15
快速回复:编译器不支持C++11
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016758 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved