- 757 名前:デフォルトの名無しさん mailto:sage [2023/03/18(土) 07:24:33.20 ID:pLAb7CSJ0.net]
- void __fastcall PrintBuffer(va_list *ap)
{ int i; char *buf = (char*)ap; int len=sizeof(va_list); for(i=0;i<len;i++) printf("%02X ", buf[i] & 0xFF); printf("[0x%08X] " , *(int*)ap); } /* fmt内容 → i:int値表示 d:double値表示 s:文字列表示 */ void unidisp(char *fmt, ...) { va_list ap; // 構造体オブジェクトを確保 va_start(ap,fmt); // 最終引数を指定してapを設定 while (*fmt) { PrintBuffer(&ap); if (*fmt == 'i') printf("%d sizeof(int) = %d\n", va_arg(ap, int) , sizeof(int)); // int値表示 if (*fmt == 'd') printf("%f sizeof(double) = %d\n", va_arg(ap, double) , sizeof(double)); // double値表示 if (*fmt == 's') printf("%s sizeof(char *) = %d\n", va_arg(ap, char *) , sizeof(char *)); // 文字列表示 ++fmt; } va_end(ap); // 後処理 } int main(void) { unidisp("iii",100, 200, 300); printf("\r\n"); // 3つのデータ表示 unidisp("idsids", 11, 22.22, "aaaa", 33, 44.44, "bbbbb"); // 6つのデータ表示 return 0; }
|

|