It also summarizes the syntax of declarations, function definitions, and expressions. You use these syntactic forms, with preprocessing directives and macros, to write a C program. Each C token derives from a preprocessing token . Additional restrictions apply, however, so not all preprocessing tokens form valid C tokens. You must ensure that only valid C tokens remain in the translation unit after preprocessing.
Every preprocessing name forms a valid C token.
Every preprocessing number in the translation unit must be either an integer constant or a floating-point constant C token. You cannot write a function definition inside another declaration, however. There are many contexts for declarations. Some forms of declarations are permitted only in certain contexts . Declarators You can follow the storage class and type part of a declaration with a list of declarators separated by commas.