int main()
{
  // these types are Visual Studio-specific
  #ifdef _MSC_VER
  __int8 i1;
  __int16 i2;
  __int32 i3;
  __int64 i4;

  assert(sizeof(i1)==1);
  assert(sizeof(i2)==2);
  assert(sizeof(i3)==4);
  assert(sizeof(i4)==8);
  #endif
  
  // general types
  
  char c;
  short s;
  int i;
  long l;
  long long ll;
  
  assert(sizeof(c)==1);
  assert(sizeof(s)==2);
  assert(sizeof(i)==4);
  assert(sizeof(l)==4);
  assert(sizeof(ll)==8);
  
  // these constants are Visual Studio-specific  
  #ifdef _MSC_VER
  assert(sizeof(1i8)==1);
  assert(sizeof(1i16)==2);
  assert(sizeof(1i32)==4);
  assert(sizeof(1i64)==8);
  assert(sizeof(1i128)==16);
  
  // oh, and these pointer qualifiers are Visual Studio-specific
  int * __ptr32 p32;
  //int * __ptr64 p64;

  // requires --i386-win32 to work
  assert(sizeof(p32)==4);
  //assert(sizeof(p64)==8);
  #endif
  
  assert(sizeof(void *)==4);
}
