2010-07-14 58 views
2

如圖所示,在結構中定義常數數據是否有任何特殊意義。這是來自第三方圖書館。在結構中定義常數

typedef struct    
{   
    IntVB abc_number;   
    #define ABC_A 0x01  
    #define ADBC_E 0x02  
    IntVB asset;    
} StructA; 
+7

您不應該在C++中使用宏。 – sbi 2010-07-14 12:24:57

+0

他們應該使用的是const定義,它將使運行時訪問數據,將被鍵入並且將有範圍。 – 2010-07-14 12:30:23

+0

@sbi:如果你看看typedef,它向我建議,儘管OP是用C++編寫的,但第三方頭文件源自C。 – Puppy 2010-07-14 13:14:39

回答

6

不是。他們可能會爲代碼中的程序員提供更好的意義。

這意味着這些常量可能與該結構容器中的項目或結構的行爲有關。

+0

而在上面的情況下,它甚至不可能在運行時訪問這些常量,因爲它們只是'#define'。不知道他們在這裏有什麼意義。 – PeterK 2010-07-14 12:22:57

1

沒有,他們可以被稱爲無任何範圍

2

同意@Luca Matteis。它們可能是在那裏定義的,因爲它們在代碼中的那一點上是相關的。編譯器不會特別對待它們。特別是,它們可以在該結構之前定義,並且工作原理相同。他們在裏面沒有意義。

但是,有一點要注意,它們只有在之後纔有效它們被定義。所以他們不能在文件中使用。這可能很重要。例如,在這一點之前可以對它們進行不同的定義。 (這樣做不好主意,但這是可能的。)

+0

是的,但我沒有看到它們在文件的其餘部分的任何地方被重新定義 – ckv 2010-07-14 12:33:03