This is GCC Bugzilla
This is GCC Bugzilla Version 2.20+
View Bug Activity | Format For Printing | Clone This Bug
[Reported to the Debian BTS as report #55298. Please CC 55298-quiet@bugs.debian.org on replies. Log of report can be found at http://bugs.debian.org/55298 ] Function attributes, such as `noreturn' and `format', should be allowed to be specified for function pointers as well as real functions. lyonesse$ cat t.c extern void (*error)(int, const char *, ...) __attribute__((noreturn)) __attribute__((format(printf, 2, 3))); $ gcc -c t.c t.c:3: argument format specified for non-function `error' Release: 3.0 (Debian) Environment: System: Debian GNU/Linux Architecture: i386 host: i386-linux build: i386-linux target: i386-linux configured with: ../src/configure -v --enable-languages=c,c++,java,f77,proto,objc --prefix=/usr --infodir=/share/info --mandir=/share/man --enable-shared --with-gnu-as --with-gnu-ld --with-system-zlib --enable-long-long --enable-nls --without-included-gettext --disable-checking --enable-threads=posix --enable-java-gc=boehm --with-cpp-install-dir=bin --enable-objc-gc i386-linux
State-Changed-From-To: open->analyzed State-Changed-Why: Format attributes now (mainline) apply properly to function types, using the documented syntax. Noreturn attributes work in the case given, but not yet in general on types, only on declarations of functions or pointers to functions; and there are other function attributes that ought to apply to types but currently only apply to decls.
Format now applies to function types for at least 4.1.0 and above.