Concatenation in the C Preprocessor

A double pound sign (##) is the preprocessing operator for concatenation.  It is used when substituting macro parameters into the macro body to tell the preprocessor to concatenate the tokens on either side of the ## operator after the parameters have been substituted. For example:

#define OPEN(fs)  fs ## _open

If this macro is called as shown here:

OPEN(ext3);

It will produce the following result:

ext3_open