2010-07-14 32 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