diff -urN tinycc.old/libtcc.c tinycc/libtcc.c
--- tinycc.old/libtcc.c	2015-03-03 16:32:04.000000000 +0300
+++ tinycc/libtcc.c	2015-03-07 16:03:55.000000000 +0300
@@ -672,6 +672,7 @@
     bf = tcc_malloc(sizeof(BufferedFile) + buflen);
     bf->buf_ptr = bf->buffer;
     bf->buf_end = bf->buffer + initlen;
+    bf->unget_buf_start = bf->unget_buffer;
     bf->buf_end[0] = CH_EOB; /* put eob symbol */
     pstrcpy(bf->filename, sizeof(bf->filename), filename);
 #ifdef _WIN32
diff -urN tinycc.old/tccgen.c tinycc/tccgen.c
--- tinycc.old/tccgen.c	2015-03-07 09:39:29.000000000 +0300
+++ tinycc/tccgen.c	2015-03-07 16:12:23.000000000 +0300
@@ -5520,6 +5520,14 @@
         if (tok == '(') {
             AttributeDef ad1;
             CType type1;
+#if 1
+	    insert_to_input("const)(");
+	    next();
+    	    if (!parse_btype(&type1, &ad1))
+		expect("const");
+    	    type_decl(&type1, &ad1, &n, TYPE_ABSTRACT);
+	    next();
+#endif
             next();
             while (tok == '(') {
                 par_count++;
diff -urN tinycc.old/tcc.h tinycc/tcc.h
--- tinycc.old/tcc.h	2015-03-03 17:16:17.000000000 +0300
+++ tinycc/tcc.h	2015-03-07 16:03:55.000000000 +0300
@@ -501,6 +501,7 @@
 typedef struct BufferedFile {
     uint8_t *buf_ptr;
     uint8_t *buf_end;
+    uint8_t *unget_buf_start;
     int fd;
     struct BufferedFile *prev;
     int line_num;    /* current line number - here to simplify code */
@@ -509,6 +510,7 @@
     int ifndef_macro_saved; /* saved ifndef_macro */
     int *ifdef_stack_ptr; /* ifdef_stack value at the start of the file */
     char filename[1024];    /* filename */
+    unsigned char unget_buffer[100]; /* this allow to insert chars into the input stream */
     unsigned char buffer[1]; /* extra size for CH_EOB char */
 } BufferedFile;
 
@@ -1318,6 +1320,7 @@
 ST_INLN void inp(void);
 ST_FUNC int handle_eob(void);
 #endif
+ST_FUNC void insert_to_input(char *str);
 
 /* ------------ xxx-gen.c ------------ */
 
diff -urN tinycc.old/tccpp.c tinycc/tccpp.c
--- tinycc.old/tccpp.c	2015-03-03 14:54:11.000000000 +0300
+++ tinycc/tccpp.c	2015-03-07 16:03:55.000000000 +0300
@@ -438,6 +438,20 @@
         ch = handle_eob();
 }
 
+ST_FUNC void insert_to_input(char *str)
+{
+    int len;
+    char *p;
+
+    len = strlen(str);
+    p = file->buf_ptr - len;
+    if (p < (char*) file->unget_buf_start)
+	tcc_error("unget buffer overflow\n");
+
+    strncpy(p,str,len);
+    file->buf_ptr = p;
+}
+
 /* handle '\[\r]\n' */
 static int handle_stray_noerror(void)
 {
