#include <stdio.h>
#define CAT_(x, ...) x ## __VA_ARGS__
#define CAT(...) CAT(__VA_ARGS__)
#define CHECK_N(x, n, ...) n
#define CHECK(...) CHECK_N(__VA_ARGS__, 0)
#define PROBE(x) x, 1
#define IS_CHAR(t) CHECK(CAT_(IS_CHAR_, t))
#define IS_CHAR_char PROBE(~),
#define QUOTE_(...) #__VA_ARGS__
#define QUOTE(...) QUOTE_(__VA_ARGS__)
#define PRINT(...) puts(QUOTE(__VA_ARGS__))
int main(void)
{
PRINT(IS_CHAR(char), IS_CHAR(int), IS_CHAR(char**));
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIENBVF8oeCwgLi4uKSB4ICMjIF9fVkFfQVJHU19fCiNkZWZpbmUgQ0FUKC4uLikgQ0FUKF9fVkFfQVJHU19fKQoKI2RlZmluZSBDSEVDS19OKHgsIG4sIC4uLikgbgojZGVmaW5lIENIRUNLKC4uLikgQ0hFQ0tfTihfX1ZBX0FSR1NfXywgMCkKI2RlZmluZSBQUk9CRSh4KSB4LCAxCgojZGVmaW5lIElTX0NIQVIodCkgQ0hFQ0soQ0FUXyhJU19DSEFSXywgdCkpCiNkZWZpbmUgSVNfQ0hBUl9jaGFyIFBST0JFKH4pLAoKI2RlZmluZSBRVU9URV8oLi4uKSAjX19WQV9BUkdTX18KI2RlZmluZSBRVU9URSguLi4pIFFVT1RFXyhfX1ZBX0FSR1NfXykKCiNkZWZpbmUgUFJJTlQoLi4uKSBwdXRzKFFVT1RFKF9fVkFfQVJHU19fKSkKCmludCBtYWluKHZvaWQpCnsKICAgIFBSSU5UKElTX0NIQVIoY2hhciksIElTX0NIQVIoaW50KSwgSVNfQ0hBUihjaGFyKiopKTsKICAgIHJldHVybiAwOwp9Cg==