Uploaded image for project: 'Qt Creator'
  1. Qt Creator
  2. QTCREATORBUG-3095

Qt Creator doesn't propose correct fields of struct of union of struct of union

    XMLWordPrintable

Details

    Description

      //0E - function
          struct Request0Efunction1_2 {
              unsigned short nchannel;
          };
      
          struct Request0Efunction5_6 {
              unsigned short ngroupOfchannel;
          };
      
          struct Request0Efunction7_23 {
              unsigned short nchannel;
              unsigned short T1,T2;
          };
      
          struct Request0Efunction24_25 {
              unsigned char nmodule,nchannel,dt;
              unsigned char T [5];
          };
      
          struct Request0Efunction33_40 {
              unsigned char oscillogramCount,oscillogramType;
              unsigned short oscillogramSize;
          };
      
          struct Request0E{
              unsigned char functionCode;
              union {
                  Request0Efunction1_2 request0Efunction1_2;
                  Request0Efunction5_6 request0Efunction5_6;
                  Request0Efunction7_23 request0Efunction7_23;
                  Request0Efunction24_25 request0Efunction24_25;
                  Request0Efunction33_40 request0Efunction33_40;
              } dataFields;
          };
          //end0E
      
          //Total type for all function. Il faut le declarer apres tous les declarations de type des fonctions.
          union AllFunctionsDataType{
              bool setMeToFalseIfNoData;//Выставлять в false, тогда первый байт будет равен 0, будь это код функции или полное отсутствие данных и дальше можно не проверять.
              Request0E f0E;
          };
      
      ...
      

      Qt Creator decide, that formattedData.f0E.request0Efunction1_2.nchannel=(unsigned short)(packetData.at(startIndex+1)<<8)|(unsigned short)(packetData.at(startIndex)); is right

      Compiler (mingw) decide that formattedData.f0E.dataFields.request0Efunction1_2.nchannel=(unsigned short)(packetData.at(startIndex+1)<<8)|(unsigned short)(packetData.at(startIndex)); is right.

      Please correct the automatic code-competion tool in Qt-Creator

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            erikv Erik Verbruggen
            sacha_d Александр Думановский
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes