#include <stdio.h>
struct Header
{
unsigned long long int alignment;
};
int main(void)
{
struct Header header; // note: we can loose the 'struct' in C++
struct Header* pheader = &header;
return 0;
}
Вышеприведенная программа прекрасно компилируется как на C, так и на C ++.
Но когда я изменяю структуру заголовка на:
struct {
unsigned long long int alignment;
} Header;
, происходит сбой со следующим сообщением на C:error: storage size of ‘Header’ isn’t known
и в C ++: error: aggregate ‘main()::Header header’ has incomplete type and cannot be defined struct Header header;
Аналогичная структура используется в реализации Storage Allocator в книге по языку программирования C от K & R.Я думал, что это то же самое, но я узнаю, что это не так.С тех пор я видел и в других местах.Я конечно больше знаком с первой версией.Что означает второй и почему он вообще существует?В чем разница?