http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58154
Alexander Huemer <alexander.huemer at xx dot vu> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|INVALID |FIXED --- Comment #2 from Alexander Huemer <alexander.huemer at xx dot vu> --- 6.2.2 #4 and #5 in which version of the document? In the one I linked 6.2.2 is a section than contains only subsections, no content itself. What would be an example for the quote in my initial post? If I understand you correctly you say the definition inherits if it is static or not from it's declaration, in case there is one. Then why does the following code not compile at all? int foo(void); static int foo(void) { volatile int a = 3; return a; } $ gcc -Wall -Wextra foo.c foo.c:3:12: error: static declaration of ‘foo’ follows non-static declaration foo.c:1:5: note: previous declaration of ‘foo’ was here