C:\> cl -GX sample.cpp
unsigned char uc = 1; if ( uc > -1 ) { printf( "ANSI-C\n" ); } else { printf( "K&R\n" ); }つまり、ANSI-C であれば int型に、K&Rであれば unsigned int型に unsigned char ucが格上げされることを利用しています。
unsigned int ui = 0x01234567 ; char *p,*q; p = ( char * )&ui; q = p + 3; if ( *p < *q ) { printf( "Big Endian\n" ); } else { printf( "Little Endian\n" ); }実はメーカー名だけで判別出来たりして(笑)
#include <assert.h> void assert( int expression );プログラム中の随所でassertマクロを埋め込むことが出来る。expressioin が偽であるとき、標準エラー出力に諸情報(__FILE__,__LINE__含む)を出力した後、 プログラムを終了させる(abort())。 デバッグ時にはありがたいがリリース時には不要なコードである。その場合は 下記のようにすることでassertマクロを無効にできる。
#define NDEBUG /* アサーション無効 */ #include <assert.h>