Why do all the C files written by my lecturer start with a single # on the first line?

Viewed 22876

I'm going through some C course notes, and every C program source file begins with a single # on the first line of the program.

Then there are blank lines, and following that other stuff followed by the main function.

What is the reason for the #?

(It's out of term now and I can't really ask the chap.)

Here's an example:

#

#include <stdio.h>
int main() {
   printf("Hello, World!");
   return 0;
}
3 Answers

It Does Nothing

As of the ISO standard of C/C++:

A preprocessing directive of the form

# new-line

has no effect.

So in today's compilers, that empty hash does not do anything (like- new-line ; has no functionality).


PS: In * pre-standardized C*, # new-line had an important role, it was used to invoke the C Pre-Processor (as pointed out by @Bathsheba). So, the code here was either written within that time period, or came from the habit of the programmer.


Edit: recently I have come across code like this-

#ifdef ANDROID
#
#define DEVICE_TAG "ANDROID"
#define DEBUG_ENABLED
#
#else
#
#define DEVICE_TAG "NOT_ANDROID"
#
#endif /* ANDROID */

Here, those empty hashes are there only for making the code look good. It also improves readability by indicating that it is a preprocessor block.

You need to know about the Compilation process of C. Because that is "must know" how the Source code converting into Executable binary code (file).

From the Compilation Process, the C source code has to Cross the pre-processor Section. But how to tell the Compiler to pre-process the code?... That the time # Symbol was introduced to the indicator of Preprocess to the compiler.

For Example #define PI 3.141 is in the Source code. Then it will be change after the Preprocessing session. Means, all the PI will be changed into 3.141.

This like #include <stdio.h>, the standard I/O Functions will be added into your Source code.

If you have a Linux machine, compile like gcc -save-temps source_code.c. And see the compiler outputs.

Related