Как убедиться, что два типа имеют одинаковый размер?

В моем коде я хочу убедиться, что 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.

6
задан eckes 5 October 2011 в 07:12
поделиться