#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(~,1)))
#define IS_CHAR_char(...) __VA_ARGS__
#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**), IS_CHAR(char(*)()));
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIENBVF8oeCwgLi4uKSB4ICMjIF9fVkFfQVJHU19fCiNkZWZpbmUgQ0FUKC4uLikgQ0FUKF9fVkFfQVJHU19fKQoKI2RlZmluZSBDSEVDS19OKHgsIG4sIC4uLikgbgojZGVmaW5lIENIRUNLKC4uLikgQ0hFQ0tfTihfX1ZBX0FSR1NfXywgMCkKI2RlZmluZSBQUk9CRSh4KSB4LCAxCgojZGVmaW5lIElTX0NIQVIodCkgQ0hFQ0soQ0FUXyhJU19DSEFSXywgdCh+LDEpKSkKI2RlZmluZSBJU19DSEFSX2NoYXIoLi4uKSBfX1ZBX0FSR1NfXwoKI2RlZmluZSBRVU9URV8oLi4uKSAjX19WQV9BUkdTX18KI2RlZmluZSBRVU9URSguLi4pIFFVT1RFXyhfX1ZBX0FSR1NfXykKCiNkZWZpbmUgUFJJTlQoLi4uKSBwdXRzKFFVT1RFXyhfX1ZBX0FSR1NfXykpCgppbnQgbWFpbih2b2lkKQp7CiAgICBQUklOVChJU19DSEFSKGNoYXIpLCBJU19DSEFSKGludCksIElTX0NIQVIoY2hhcioqKSwgSVNfQ0hBUihjaGFyKCopKCkpKTsKICAgIHJldHVybiAwOwp9Cg==