tags:

views:

190

answers:

5

what is the function of #?

+2  A: 

It's because # is an indicator that its a preprocessor statement

meaning before it compiles your code, it is going to include the file stdio.h

Keith Nicholas
+4  A: 

Because # is the standard prefix for introducing preprocessor statements.

In early C compilers, the pre-processor was a separate program which would handle all the preprocessor statements (similar to the way early C++ "compilers" such as cfront generated C code) and generate C code for the compiler (it may still be a separate program but it may also be just a phase of the compiler nowadays).

The # symbol is just a useful character that can be recognised by the preprocessor and acted upon, such as:

#include <stdio.h>
#if 0
#endif
#pragma treat_warnings_as_errors
#define USE_BUGGY_CODE

and so on.

paxdiablo
+12  A: 

It denotes a preprocessor directive:

One important thing you need to remember is that the C preprocessor is not part of the C compiler.

The C preprocessor uses a different syntax. All directives in the C preprocessor begin with a pound sign (#). In other words, the pound sign denotes the beginning of a preprocessor directive, and it must be the first nonspace character on the line.

# was probably chosen arbitrarily as an otherwise unused character in C syntax. @ would have worked just as well, I presume.

If there wasn't a character denoting it, then there would probably be trouble differentiating between code intended for the preprocessor -- how would you tell whether if (FOO) was meant to be preprocessed or not?

Mark Rushakoff
+3  A: 

Preprocessor directives are lines included in the code of our programs that are not program statements but directives for the preprocessor. These lines are always preceded by a hash sign (#). The preprocessor is executed before the actual compilation of code begins, therefore the preprocessor digests all these directives before any code is generated by the statements.

Source: http://www.cplusplus.com/doc/tutorial/preprocessor/

TNi
+1  A: 

# is a pre-processor directive. The preprocessor handles directives for source file inclusion (#include), macro definitions (#define), and conditional inclusion (#if). When the pre-processor encounters this, it will include the headers, expand the macros and proceeds towards compilation. It can be used for other purposes like halting compilation using the #error directive. This is called conditional compilation.

Praveen S