What does the void statement in C do?
c, syntax, void
Solution
This question got me interested because my first thought was K&R. I went back to my old K&R book (Appendix A p.192) on found blurb about declarations (transcripted):
8. Declarations
Declarations are used to specify the interpretation which C gives to each identifier; they do not necessarily reserve storage associated with the identifier. Declarations have
the form
declaration:
decl-specifier declarator-listopt;
The declarators in the declarator-list contain the identifiers being declared. The decl-specifiers consist of a sequence of type and storage class specifiers.
decl-specifiers:
type-specifier decl-specifiersopt
sc-specifier decl-specifiersopt
This leads me to believe that delarator lists are optional (meaning it can be empty).
To add to this confusion on following page, it lists the set of legal type-specifier values and void is not one of them.
In my narrow interpretation that this may be still legal (but obsolete) C.
Problem
What does putting `void;` on a line do in C? The compiler is warning about it but i dont understand. What is the point in being able to put void on a line like this? ``` #include <stdio.h> int main() { void; printf("word dude"); return 1; } ``` eh ``` $ gcc -pedantic -ansi -Wall -Wextra eh.c -o eh eh.c: In function 'main': eh.c:4:2: warning: useless type name in empty declaration $ ./eh word dude ``` People seem to be getting confused what I'm asking: What does this line mean, does it do anything? why is it valid? ``` void; ``` Removed void cast as it's causing unnecessary discussion.