Signed-off-by: Ramsay Jones <ramsay@xxxxxxxxxxxxxxxxxxx> --- When updating this patch from the 0.3 version, I made the (new) third parameter KW_ATTRIBUTE only, rather than (KW_ATTRIBUTE | KW_ASM), since it did not seem correct to allow an asm there; is that correct? The test case for this was abstracted from an example in the "expat.h" header file. $cat ape.c typedef void (__attribute__((__cdecl__)) *FP)(void *u, const char *n); void set_FP(void *cb, FP f); $ parse.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) diff --git a/parse.c b/parse.c index db5c9e6..16a6dce 100644 --- a/parse.c +++ b/parse.c @@ -1149,7 +1149,10 @@ static struct token *direct_declarator(struct token *token, struct symbol *decl, if (token->special == '(') { struct symbol *sym; struct token *next = token->next; - int fn = (p && *p) || match_op(next, ')') || lookup_type(next); + int fn; + + next = handle_attributes(next, ctype, KW_ATTRIBUTE); + fn = (p && *p) || match_op(next, ')') || lookup_type(next); if (!fn) { struct symbol *base_type = ctype->base_type; -- 1.5.1
typedef void (__attribute__((__cdecl__)) *FP)(void *u, const char *n); void set_FP(void *cb, FP f);