#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#define BYTE 256
#define GetBit(array_name, index) \
(((index) < (array_name)[0]) && ((index) >= 0)) ? \
(((array_name)[((index) / BYTE) + 1] & ( (unsigned long)1 << \
((index) % BYTE))) ? 1 : 0) : \
(FatalError("Index %ld out of range 0..%ld\n", (long)(index), \
(long)(array_name)[0]), 0)
void FatalError(const char *fmt, ...) {
va_list args;
}
int main(void) {
int a[] = {1000, 1, 2, 3, 4, 5};
GetBit(a, 2);
return 0;
}
I2luY2x1ZGUgPHN0ZGFyZy5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKI2RlZmluZSBCWVRFIDI1NgojZGVmaW5lIEdldEJpdChhcnJheV9uYW1lLCBpbmRleCkgXAogICgoKGluZGV4KSA8IChhcnJheV9uYW1lKVswXSkgJiYgKChpbmRleCkgPj0gMCkpID8gXAogICgoKGFycmF5X25hbWUpWygoaW5kZXgpIC8gQllURSkgKyAxXSAmICggKHVuc2lnbmVkIGxvbmcpMSA8PCBcCiAgICAoKGluZGV4KSAlIEJZVEUpKSkgPyAxIDogMCkgOiBcCiAgKEZhdGFsRXJyb3IoIkluZGV4ICVsZCBvdXQgb2YgcmFuZ2UgMC4uJWxkXG4iLCAobG9uZykoaW5kZXgpLCBcCiAgICAobG9uZykoYXJyYXlfbmFtZSlbMF0pLCAwKQoKdm9pZCBGYXRhbEVycm9yKGNvbnN0IGNoYXIgKmZtdCwgLi4uKSB7CiAgdmFfbGlzdCBhcmdzOwogIHZhX3N0YXJ0KGFyZ3MsIGZtdCk7CiAgdmZwcmludGYoc3RkZXJyLCBmbXQsIGFyZ3MpOwogIHZhX2VuZChhcmdzKTsKICBleGl0KEVYSVRfRkFJTFVSRSk7Cn0KCmludCBtYWluKHZvaWQpIHsKICBpbnQgYVtdID0gezEwMDAsIDEsIDIsIDMsIDQsIDV9OwogIEdldEJpdChhLCAyKTsKICByZXR1cm4gMDsKfQ==