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.

Original source

Related problems