CでConst構造体を初期化する方法-QAC警告を回避するには

hariudkmr

const構造体の初期化中に、以下のQAC警告が表示されます。

"[C] Initializer for 'struct', 'union' or array type, or any object with static storage duration, must be a constant "

FPARM1C2.c

 const PROFI_tstBlock FPARM_astFblBlockTable[] = {FPARM_ast_FblBlock_Table};

 const PROFI_tstPartition FPARM_astFblPartitionTable[] = {FPARM_ast_FblPartition_Table};   

上記の宣言により、QAC警告が発生します。

FPARM1CA.H

#define FPARM_ast_FblBlock_Table \
0x00000000 , 0x00000000 , 0x00000000 , 0x00000000 , 0x00020000 ,  0x00000000 , 0x00001000 , 0x00000000 , FPARM_nMemTypeIntFlash1 , 0x01 ,   0x0000 ,  FPARM_bi8DataBlock | FPARM_bi8CommonBlock , 0x0000

#define FPARM_ast_FblPartition_Table \
(uint32)__ghsbegin_FLoaderIdent, (uint32)0x0, (uint32)FPARM_astFblBlockTable, (uint32) 0x0, 1, 0, 0x00, 0x00, 0x00, 0x00

Profi1c1.h

typedef struct PROFI_tstPartition
{
   uint32 xAddressID;           
   uint32 u32Reserved1;
   uint32 xBlockTableAdr;       
   uint32 u32Reserved2;
   uint16 u16NumberOfBlocks;             
   uint16 u16GlobalProperties;           
   uint8  au8Reserved[4];
} PROFI_tstPartition;


typedef struct PROFI_tstBlock
{
    uint32 xPhysicalAddress;             
    uint32 u32Reserved1;
    uint32 xLogicalAddress;              
    uint32 u32Reserved2;
    uint32 xBlockLength;                 
    uint32 u32Reserved3;
    uint32 xSectorSize;                
    uint32 u32Reserved4;
    uint8  u8BlockMemoryType;                  
    uint8  u8Security;                          
    uint16 u16Reserved;                         
    uint16 u16BlockProperties;                   
    uint16 u16Reserved2;                        
} PROFI_tstBlock;

警告を回避するためにconst構造を初期化するための型キャストまたはより良い方法はありますか?

ルンディン

静的ストレージ期間を持つ変数は、別の変数から初期化できません。したがって、配列の場合、初期化子リスト内の他の変数への参照を含めることはできません。

このようなことをしないでください:

const type1 array1 [] = {1, 2, 3};
const type2 array2 [] = {0, array1, 0}; // won't work

代わりに、次のようなことを行います。

#define ARRAY1_INIT { 1, 2, 3 }

const type1 array1 [] = ARRAY1_INIT;
const type2 array2 [] = {0, ARRAY1_INIT, 0};

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

C ++で構造体をCの方法で初期化する

分類Dev

c ++で構造体のベクトルを初期化する方法

分類Dev

c ++で構造体を正しく初期化する方法

分類Dev

golangで次の構造の構造体を初期化する方法

分類Dev

cythonで構造体をNULLに初期化する方法は?

分類Dev

別の構造体で構造体の配列を初期化する方法は?

分類Dev

Cの構造体を初期化する

分類Dev

mallocで構造体を初期化する

分類Dev

C ++で構造体内の共用体の構造体メンバーを初期化する方法は?

分類Dev

構造体をユニオンで初期化する方法は?

分類Dev

PLC-ST: 宣言で構造体を初期化する方法は?

分類Dev

Swift-構造体で配列を初期化する方法は?

分類Dev

Cでの宣言後に構造体の配列を初期化する方法

分類Dev

構造体で構造体を初期化する

分類Dev

Cで構造体を初期化するための推奨される方法

分類Dev

C構造体配列を正しく初期化する方法

分類Dev

c ++:構造体を初期化する適切な方法

分類Dev

構造体ポインタと指定された初期化を使用してC構造体を初期化する方法

分類Dev

C ++構造体で組み込み配列を初期化する方法

分類Dev

golangでC構造体を初期化するときに、構造体初期化子の値が少なすぎます

分類Dev

C ++ 20指定の初期化子を使用して構造体で共用体を初期化する方法

分類Dev

Go構造体でメンバーを初期化する方法

分類Dev

Juliaで構造体の配列を初期化する方法

分類Dev

構造体の初期化で#defineを使用する方法

分類Dev

systemverilogで構造体の初期化を処理する方法

分類Dev

ゼロ-C ++で構造体を再初期化する

分類Dev

Cループで構造体を初期化する

分類Dev

構造体Cで変数行列を初期化する

分類Dev

構造体をnullに初期化する方法は?

Related 関連記事

  1. 1

    C ++で構造体をCの方法で初期化する

  2. 2

    c ++で構造体のベクトルを初期化する方法

  3. 3

    c ++で構造体を正しく初期化する方法

  4. 4

    golangで次の構造の構造体を初期化する方法

  5. 5

    cythonで構造体をNULLに初期化する方法は?

  6. 6

    別の構造体で構造体の配列を初期化する方法は?

  7. 7

    Cの構造体を初期化する

  8. 8

    mallocで構造体を初期化する

  9. 9

    C ++で構造体内の共用体の構造体メンバーを初期化する方法は?

  10. 10

    構造体をユニオンで初期化する方法は?

  11. 11

    PLC-ST: 宣言で構造体を初期化する方法は?

  12. 12

    Swift-構造体で配列を初期化する方法は?

  13. 13

    Cでの宣言後に構造体の配列を初期化する方法

  14. 14

    構造体で構造体を初期化する

  15. 15

    Cで構造体を初期化するための推奨される方法

  16. 16

    C構造体配列を正しく初期化する方法

  17. 17

    c ++:構造体を初期化する適切な方法

  18. 18

    構造体ポインタと指定された初期化を使用してC構造体を初期化する方法

  19. 19

    C ++構造体で組み込み配列を初期化する方法

  20. 20

    golangでC構造体を初期化するときに、構造体初期化子の値が少なすぎます

  21. 21

    C ++ 20指定の初期化子を使用して構造体で共用体を初期化する方法

  22. 22

    Go構造体でメンバーを初期化する方法

  23. 23

    Juliaで構造体の配列を初期化する方法

  24. 24

    構造体の初期化で#defineを使用する方法

  25. 25

    systemverilogで構造体の初期化を処理する方法

  26. 26

    ゼロ-C ++で構造体を再初期化する

  27. 27

    Cループで構造体を初期化する

  28. 28

    構造体Cで変数行列を初期化する

  29. 29

    構造体をnullに初期化する方法は?

ホットタグ

アーカイブ