我的(相对较旧的)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 ++吗?预处理器令牌语法的规则是什么?
答案 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替换为空格,即在预处理器之前。