條目六《當心C 編譯器中最煩人的分析機制》

2022-02-04 03:44:38 字數 664 閱讀 8920

c++是較為底層的面相物件語言,在底層的語法規則分析中,有很多隱藏的分析機制。

c++中的普遍規律相符,即盡可能地解釋為函式宣告。

把形式引數的宣告用括號括起來是非法的,但給函式引數加上括號卻是合法的,所以通過增加一對括號,我們強迫編譯器按我們的方式來工作。

例如:

這樣是不正確的,因為形參含有括號

爭取做法:

用乙個括號包括整個形參是可以的。

但是種做法並不是所有的編譯器都能識別的,所以存在可移植性問題,在跨平台是可能會出現問題。

解決方法:

使用臨時命名迭代器來分步完成需求。

雖然這樣做與標準stl使用有點違背了,但是為了沒有二義性和提高**可讀性和方便維護是比較提倡的。

S6 當心C 編譯器最煩人的分析機制

1 考慮乙個包含int的檔案,複製到list,如下 ifstream datafile ints.bat listdata istream iterator datafile istream iterator 2 上面的 不是預期的行為。3 先從最簡單開始,宣告方法 int f double d 等...

LCC編譯器的源程式分析 1 C編譯器的目標

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!先從簡單的目標來分析這個大規模的 c 編譯器,畢竟它的功能比較複雜,並且源程式的行數也是非常多的。因此,把簡單的目標定出來,然後再分析它,這樣才會有的放矢。接著再跟著編譯執行的主線來分析它的源程式。下面先看一下簡單的 c 例子,如下 001 inc...

簡單的C語言編譯器 詞法分析器

首先要將可能出現的詞進行分類,可以有不同的分類方式。如多符一類 將所有逗號 分號 括號等都歸為一類,或者一符一類,將乙個符號歸為一類。我這裡採用的是一符一類的方式。c 如下 ifndef tag h define tag h namespace tag endif設計乙個詞法分析器,當然要包括如何儲...