新手的时候碰到的预处理命令

新手的时候碰到的预处理命令

今天一个新同学来问一个典型的预处理的问题,我当年也碰到这样的问题,贴出来,让更多的人能直接搜到

预处理命令

#,##

# 和 ## 操作符是和#define宏使用的. 使用# 使在#后的首个参数返回为一个带引号的字符串. 例如, 命令

    #define to_string( s ) # s

将会使编译器把以下命令

    cout << to_string( Hello World! ) << endl;

理解为

    cout << "Hello World!" << endl;

使用##连结##前后的内容. 例如, 命令

    #define concatenate( x, y ) x ## y
...
int xy = 10;
...

将会使编译器把

    cout << concatenate( x, y ) << endl;

解释为

    cout << xy << endl;

理所当然,将会在标准输出处显示'10'.



#line

语法:
  #line line_number "filename"
            

#line命令是用于更改__LINE__ 和 __FILE__变量的值. 文件名是可选的. __LINE__ 和 __FILE__ 变量描述被读取的当前文件和行. 命令

    #line 10 "main.cpp"

更改行号为10,当前文件改为"main.cpp".


预定义变量

语法:

  __LINE__
            __FILE__
            __DATE__
            __TIME__
            _cplusplus
            __STDC__
            

下列参数在不同的编译器可能会有所不同, 但是一般是可用的:

  • __LINE__ 和 __FILE__ 变量表示正在处理的当前行和当前文件.
  • __DATE__ 变量表示当前日期,格式为month/day/year(月/日/年).
  • __TIME__ 变量描述当前的时间,格式为hour:minute:second(时:分:秒).
  • _cplusplus 变量只在编译一个C++程序时定义.
  • __STDC__ 变量在编译一个C程序时定义,编译C++时也有可能定义.

你可能感兴趣的:(新手的时候碰到的预处理命令)