Boost是否使用合法的C ++预处理指令语法?

时间:2012-08-11 07:24:24

标签: c++ boost syntax c-preprocessor boost-preprocessor

我的(相对较旧的)C ++编译器在Boost的this文件中被阻塞,起始于:

# /* Copyright (C) 2001
#  * Housemarque Oy
#  * http://www.housemarque.com
#  *
#  * Distributed under the Boost Software License, Version 1.0. (See
#  * accompanying file LICENSE_1_0.txt or copy at
#  * http://www.boost.org/LICENSE_1_0.txt)
#  */
#

这真的是合法的C ++吗?预处理器令牌语法的规则是什么?

1 个答案:

答案 0 :(得分:22)

是的,标准§16[cpp]明确允许仅包含#和空格的行:

  

控制线:
  # include pp-tokens new-line
  # define标识符替换列表换行符   # define标识符lparen标识符列表 opt )替换列表换行符   # define标识符lparen ... )替换列表换行符   # define标识符lparen标识符列表, ... )替换列表换行符   # undef标识符换行符   # line pp-tokens new-line
  # error pp-tokens opt new-line
  # pragma pp-tokens opt new-line
   #新行

请注意,注释将在转换阶段3替换为空格,即在预处理器之前。