В моем коде я хочу убедиться, что sizeof(a) == sizeof(b)
.
Первый подход был позволить препроцессору сделать проверку:
#if (sizeof(a) != sizeof(b))
# error sizes don't match
#endif
что не компилируется из-за фатальной ошибки C1017: invalid integer constant expression
. Хорошо. Поймите.
Следующая попытка:
if(sizeof(a) != sizeof(b)){
printf("sizes don't match\n");
return -1;
}
которая приводит к предупреждению: предупреждение C4127: условное выражение является константой
.
Теперь я застрял. Есть ли способ без предупреждений и ошибок убедиться, что две структуры a
и b
имеют одинаковый размер?
Edit:. Компилятор - Visual Studio 2005, уровень предупреждения установлен на 4.