2012-08-11 39 views
13

我的(相對舊)C++編譯器哽咽this文件中升壓,開始了爲:Boost使用合法的C++預處理指令語法嗎?

# /* 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

哦不!不要告訴我你使用Turbo C++! – 2012-08-11 07:49:43

+0

@CodyGray:天啊,不!這是一個老的VC編譯器。 – Mehrdad 2012-08-11 07:54:45

+0

什麼版本,VC 4.0?我很好奇爲什麼你不能升級 – Viet 2012-08-11 08:27:22

回答

22

是,僅含有#和空白的線由標準§16[CPP]是明確允許:

控制線:
# include PP-令牌新行
# define標識符replacement- list new line
# define identifier lparen identifier-list opt) replacement-list new-line
# define標識符LPAREN ...)替換列表新行
# define標識符LPAREN標識符列表, ...)替換列表新行
# undef標識符新行
# line PP-令牌新行
# error PP-令牌選擇新行
# pragma PP-令牌選擇新行
# new-line

請注意,在預處理器之前的轉換階段3中,空白替換爲空白。

+1

+1。最後一個是我正在尋找的所有東西,並且實際上回答了這個問題:'#new-line'。 – Nawaz 2012-08-11 07:35:26

+3

@Nawaz:OP詢問「預處理器令牌的語法規則是什麼」,因此提供一些上下文不會受到影響。 – ybungalobill 2012-08-11 07:38:11

+0

@Nawaz:哈哈看看我的帖子上的編輯歷史,這很有趣。 :) – Mehrdad 2012-08-11 07:38:22