2011年6月8日 星期三

[c][c++]AIX cpp, VC++ cpp, VC2005 cpp

雖然說,只用 ANSI lib 的同樣的程式 應該」都可以直接跑,
事實上,還是辦不到。

舉例:
AIX cpp 可以
#include <userinclude.cpp>
只要把 cpp 放在同一個目錄。
但是
在 VC++ 眼中犯了兩個錯誤,
(1)自己的 header 檔放在同一個目錄的,要用雙引號夾起來。
(2)include 要是 header 檔,不然會出現 link 失敗。
所以要改成
#include "userinclude.hpp"

舉例:
AIX cpp, VC++ cpp可以不宣告
using namespace std;
就使用 cout << "abc" << endl;
但是
VC2005 cpp 就說不行,
using namespace std;
一定要加上去!

舉例:
AIX cpp 的 字元 array 可以設到 9999999 (有7個9)
VC++ cpp,VC2005 cpp 卻會出現 stack overflow。(一進 main 就發生)
要特別把stack 放大,或是把該變數放到global,或是動態配置。
參考:http://legnaleurc.blogspot.com/2007/06/cstack-overflow.html
參考:http://tw.myblog.yahoo.com/josh-chang/article?mid=1340

舉例:
AIX cpp 可以對 NULL pointer 執行 strlen。
但是 VC++ cpp 卻會發生 access violation。
實在有很多要修的地方。
也就是說,原本大家想的程式碼搬過去就會動這檔事,
真的只是自我感覺良好。

沒有留言:

張貼留言