title: warning! dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
body: <p>I have problem with aliasing. I have never faced with it before.
  I am using Eclipse CDT.
  I read different solutions but I couldn't find the suitable one for me.</p>
  
  <p>I have the warning</p>
  
  <blockquote>
    <p>dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]</p>
  </blockquote>
  
  <p>So I have the following peace of code:</p>
  
  <pre><code>timestamp = st0 % 100000000;
  
  for (std::list&lt;struct trace *&gt;::iterator it = frame_list.begin();
       it != frame_list.end();
       ++it) {
    struct my_rtppacket *packet = NULL; 
    packet = new struct my_rtppacket;
  
    packet-&gt;ts = (int32_t)((*it)-&gt;time * 1000000);
    packet-&gt;seq = count_seq;
  
    //In the following two strings I have the warnings :(
  
    *(uint16_t*) (packet-&gt;buf + 2) = htons(packet-&gt;seq);
    *(int32_t*) (packet-&gt;buf + 4) = htonl(packet-&gt;ts + timestamp);
  
    insert_data_to_list(packet); // This function inserts packets to list}
  }
  </code></pre>
  
  <p>As the result there are wrong values in <code>packet-&gt;buf + 2</code> and <code>packet-&gt;buf + 4</code>.</p>
  
  <p>Please! Help me to fix this problem!</p>
  
  <p>EDIT
  I want to understand what was wrong... The structure my_rtppacket is defined in the following way:</p>
  
  <pre><code>{
  struct my_rtppacket
  {
  public:
      my_rtppacket():dump_ts(0), payloadlen(0),packetlen(0),ts(0), seq(0), seq_fr(0), frame_number(0),
      erase(NUM, INIT), path(NUM, INIT), create_time(0), alloc_time(0), before_create(0), sent_flag(0){}
      uint32_t dump_ts;   /*timestamp of RTP dump. It is similar to timestamp of packet generation from the application*/
      int payloadlen;
      int packetlen;
      int32_t ts;         /*timestamp in RTP file*/
      uint16_t seq;       /* Sequеnce number in video sequence*/
      int seq_fr;         /* Sequеnce number in a frame*/
      int frame_number;
      char buf[1600];
      std::vector &lt;path_t&gt; erase;
      std::vector &lt;path_t&gt; path;       //Declare a vector of path_type elements
      char frame_type[10];
      int64_t create_time;
      int64_t alloc_time;
      int64_t before_create;
      int sent_flag;
  
  };
  
  }
  </code></pre>