我想知道,如果我把一个完全静态类的地址,我保证它的成员按照正确的顺序排列?我想这也适用于全球范围内定义的一组变量。如果我使用地址,是否保证静态变量的顺序?
struct Buffer1
{
static float val1;
static float val2;
};
void readBuffer(void* buffer){ /*Do something*/}
int main()
{
// Sending the buffer
readBuffer(&Buffer1); // Type name is not allowed
readBuffer(&Buffer1::val1); // Does work, wondering if data will be correct
return 0;
}
另外,有没有一种方法来获取一组静态或全局变量的大小?像:
// Getting the size of the buffer
size_t sizeOfBuffer = sizeof(Buffer1); // Wrong size, doesn't measure static members
sizeOfBuffer = sizeof(Buffer1::val1) + sizeof(Buffer1::val2); // Does work but doesn't account for data padding/alignment, and is also tedious to change
我知道在这种情况下,它更好地实例化类,但我很好奇这两个问题。谢谢。
只需将这些变量放入结构中 –
您还会遇到结构填充问题。你不能'struct Buffer1 {float val1,val2; };静态缓冲区1缓冲区1;'相反,所以你可以避免至少'sizeof'问题。 –
@Ken Y-N是的,当然,这是我现在的样子。我只是在想,我正在学习语言的来龙去脉,并试图看看我能用静态结构做些什么。 – Zebrafish