gpt4 book ai didi

c++ - 为什么 lint 会针对以下代码提示 "Warning 446: side effect in initilizer"和 lint e446?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:33 25 4
gpt4 key购买 nike

我需要帮助来理解为什么 lint 会因为 struct 初始化而在下面的代码上提示。代码运行没有任何问题,或者至少没有任何已知问题

struct MsgKey_t {
int type;
int index;
int signal;
};

typedef std::map< int, std::pair< MsgKey_t*, int* > > MyMap_t;

MyMap_t myMap;

MyMap_t::iterator subKey = myMap.find( 11 );

if ( myMap.end() == subKey )
{
exit(-1);
}

MsgKey_t key = { subKey->second.first->type, subKey->second.first->index, subKey->second.first->signal };

如果我将结构的初始化更改为如下所示:

MsgKey_t key;
memcpy( &key, subKey->second.first, sizeof( key ) );

或:

MsgKey_t* pKey = subKey->second.first;
MsgKey_t key = { pKey->type, pKey->index, pKey->signal };

lint 一整天都很开心。

最佳答案

lint 可能指的是初始化中的 operator -> 吗?这可能会产生副作用,具体取决于迭代器的实现。

关于c++ - 为什么 lint 会针对以下代码提示 "Warning 446: side effect in initilizer"和 lint e446?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23082795/

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