sizeof
- это , а не функция.Это оператор времени компиляции.
Вы не говорите, какой заголовок доставляет вам проблемы.
Возможное предположение может заключаться в том, что какой-то неясный прием препроцессора удаляет в нем какое-то поле,изменение реального типа поля.Например, представьте, что один заголовок foo.h
имеет
// in file foo.h
#ifdef FOO_BAR
typedef short number_t;
#else
typedef long number_t;
#endif
, а другой заголовок bar.h
имеет
// in file bar.h
#define FOO_BAR
#include "foo.h"
struct barbare_st {
number_t num;
char name[20];
};
Чтобы узнать, вы можете использовать команду ptype
gdb
отладчик, или просто загляните в предварительно обработанную форму xxx.i
некоторого файла xxx.c
, полученного с помощью
gcc -C -E -Dappropriate_defines -Iinclude_dirs/ xxx.c > xxx.i