does break strict-aliasing rules

来源:互联网 发布:reflector软件下载 编辑:程序博客网 时间:2024/06/06 13:12

发现自己有warning强迫综合征

../Framework/src/network/net.cpp: In function ‘boolean NetGetIP(int8*)’:

../Framework/src/network/net.cpp:813: warning: dereferencing pointer ‘saddr’ does break strict-aliasing rules
../Framework/src/network/net.cpp:812: note: initialized from here
../Framework/src/network/net.cpp: In member function ‘boolean Net::sOperaRoute(const int8*, const int8*, int32)’:
../Framework/src/network/net.cpp:436: warning: dereferencing pointer ‘<anonymous>’ does break strict-aliasing rules
../Framework/src/network/net.cpp:436: note: initialized from here
../Framework/src/network/net.cpp:441: warning: dereferencing pointer ‘<anonymous>’ does break strict-aliasing rules
../Framework/src/network/net.cpp:441: note: initialized from here
../Framework/src/network/net.cpp:446: warning: dereferencing pointer ‘<anonymous>’ does break strict-aliasing rules

./Framework/src/network/net.cpp:446: note: initialized from here

解决办法


摘抄自网络:

http://blog.chinaunix.net/uid-17019762-id-3152012.html

  1. // 会出现warning 的代码!
  2. class cInit
  3. {
  4. public:
  5.     cInit(std::string str, int a) : str_(str), a_(a)
  6.     { }

  7. private:
  8.     int a_;
  9.     std::string str_;
  10. };


  1. // OK
  2. class cInit
  3. {
  4. public:
  5.     cInit(std::string str, int a) : str_(str), a_(a)
  6.     { }

  7. private:
  8.     std::string str_;
  9.     int a_;
  10. };