Archive

文章標籤 ‘C/C++’

Using Boost libraries with Visual Studio 2008

2010年4月13日 Austin 1 則評論

網站:Boost C++ Libraries(下載)

Step 1. 取得Boost libraries
到網站的Download去下載,然後解壓縮(D:/boost_1_42_0)

Step 2. 建置Bjam
進入D:/boost_1_42_0,然後執行bootstrap.bat
跑完之後在這個目錄就會多出一個bjam.exe

Step 3. 建置Boost Libraries
在D:/boost_1_42_0建立一個buildall_vc90.bat內容如下

bjam toolset=msvc-9.0 variant=debug threading=multi link=shared define=_BIND_TO_CURRENT_VCLIBS_VERSION
bjam toolset=msvc-9.0 variant=release threading=multi link=shared define=_BIND_TO_CURRENT_VCLIBS_VERSION

執行剛剛建立的那個buildall_vc90.bat,等他跑完在D:\boost_1_42_0\stage\lib應該有一堆*.lib、*.dll

Step 4. 設定Visual Studio 2008
開啟Visual Studio 2008,工具 => 選項 => 專案和方案 => VC++目錄
顯示目錄的那個下拉選單
Include檔案加入D:\boost_1_42_0
程式庫檔加入D:\boost_1_42_0\stage\lib

Categories: C/C++, 未分類 Tags: , ,

Stack overflow

2010年3月17日 Austin 尚無評論

最近遇到的一個問題Stack overflow,不難解~改用new&delete就對了丫,結果還是錯,找了一下資料是用new&delete沒錯,但是為啥不行,最後發現原來還有別的地方有用一樣的數字來宣告,程式如下:
一開始找出來發生錯誤的地方(我一直以為是這錯@@a)

const unsigned int numSolution1 = 50;

// 掛
Solution sol1[numSolution1];

// 正常來說改成這樣就OK了,結果調成100還是會掛
Solution *sol1 = new Solution[numSolution1];

最後發現~另外還有幾個個檔案有類似下面的程式:

// 掛,因為這邊也要改用new
const unsigned int numSolution2 = numSolution1 * 2;
Solution sol2[numSolution2];

閱讀全文…

Categories: C/C++, 未分類 Tags: , , ,

Install Intel C++ Compiler on Ubuntu 9.10(64bit)

2010年3月15日 Austin 尚無評論

安裝相關套件:

# 必要套件
sudo apt-get install gcc build-essential g++ rpm

# this is only required on 64bit Ubuntu/Debian systems
sudo apt-get install ia32-libs

# For use the Intel IDB graphical debugger
sudo apt-get install openjdk-6-jre-headless

Ubuntu 9.10後改用libstdc++6,而Install Intel C++ Compiler需要libstdc++5,所以要另外安裝。先到http://packages.debian.org/stable/base/libstdc++5下載adm64的版本用dpkg安裝,再下載i386解開,並取出函式庫

# 下載並adm64的版本
wget http://debian.linux.org.tw/debian/pool/main/g/gcc-3.3/libstdc++5_3.3.6-18_amd64.deb
sudo dpkg -i libstdc++5_3.3.6-18_amd64.deb

# 下載i386並解開
wget http://debian.linux.org.tw/debian/pool/main/g/gcc-3.3/libstdc++5_3.3.6-18_i386.deb
dpkg --extract libstdc++5_3.3.6-18_i386.deb ./

# 出函式庫
cd usr/lib
sudo cp libstdc++.so.5.0.7 /usr/lib32
cd /usr/lib32
sudo ln -s libstdc++.so.5.0.7 libstdc++.so.5

然後就可進入Install Intel C++ Compiler的安裝了,裝完之後把下面指令加入到.bashrc即可直接使用icc

source /opt/intel/Compiler/11.1/069/bin/iccvars.sh intel64

 

參考資料:Using Intel Compilers for Linux with Ubuntu

Categories: C/C++, Linux Tags: , , , ,

Call by Value、Call by Pointer與Call by Reference

2009年3月27日 Austin 尚無評論

Call by Value

// 宣告方式
void test(int param) {
    // 參數在傳入時會copy一份到param
    // 所以如果傳入的是一個大量的資料,則會使程式效能變差
    // 但是在function內對param異動都不會影響num
    .....;
}

// 呼叫方式1
int num;
test(num);

// 呼叫方式2
int *num;
test(*num);

Call by Pointer

// 宣告方式
void test(int *param) {
    // param接收的是記憶體位址,所以呼叫時要特別注意
    // 在function內對param做任何的異動都會影響到num
    .....;

    // 但是可以把param的記憶體位址再改掉
    int temp;
    param = &temp;
}

// 呼叫方式1
int num;
test(&num);

// 呼叫方式2
int *num;
test(num);

Call by Reference

// 宣告方式
void test(int &param) {
    // 可以把param當成是一般的變數使用
    // 但他又很像是Call by Pointer記憶體位址會被設成跟傳入變數一樣(任何的異動都會影響到num)
    // 不過卻又不像Call by Pointer,因為不能修改記憶體位址,而且呼叫方式是跟Call by Value一樣
    .....;
}

// 呼叫方式1
int num;
test(num);

// 呼叫方式2
int *num;
test(*num);
Categories: C/C++, 未分類 Tags: , ,

C/C++教學網頁

2009年3月22日 Austin 尚無評論

C程式簡介
蠻完整的C/C++教學網頁

C 語言學習筆記C++ 學習筆記
這個也蠻完整的,不過內容比較簡要

C 程式語言C++ 程式語言
比較少詳細介紹,大部份是一些比較需要注意的地方

C/C++哪些地方會用到pointer呢?
值得一看的文章,重點在比較C/C++的pointer、reference、vector、array…

pointer和reference有什麼差別呢?
C++為了解決pointer程式不易閱讀的問題,增加了reference型別,C#/Java也取消了pointer,用reference取代pointer,但reference和pointer有什麼不同呢?

C++ Library ReferenceC++ Reference
方便的Reference,寫程式時很好用

Categories: C/C++, 未分類 Tags: , ,

Makefile(Intel C++ & nmake)

2009年3月6日 Austin 尚無評論

複製一個iclvars.bat然後在最後加後cmd,這樣他跟完設定後視窗就不會關掉了
執行這個iclvars.bat並cd到放Makefile的目錄後,可以用下面這些指令來編譯:

rem 建置
nmake

rem 重建
nmake rebuild

rem 清除編譯的檔案
nmake clean

在放程式碼的目錄下建立Makefile如下:

閱讀全文…

Categories: C/C++, 未分類 Tags: , ,