PIXNET Logo登入

遊戲人生 人生遊戲

跳到主文

如果工作是玩樂就太好了

部落格全站分類:攝影寫真

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 4月 18 週三 201214:46
  • C++ 函式參數指標寫法

C++ 函式參數指標寫法
void swap(int a, int b) // call by value
{
int tmp = a;
a = b;
b = tmp;
}
(繼續閱讀...)
文章標籤

createps 發表在 痞客邦 留言(0) 人氣(16,884)

  • 個人分類:C++
▲top
  • 12月 19 週一 201116:50
  • C++ 用以下方式來讓單參數多重輸入

用以下方式來讓單參數多重輸入
#define D3DFVF_XYZRHW 0x002
#define D3DFVF_DIFFUSE 0x004
#define D3DFVF_TEX1 0x006
#define D3DFVF_XYZ 0x008
#define D3DFVF_NORMAL 0x00a
(繼續閱讀...)
文章標籤

createps 發表在 痞客邦 留言(1) 人氣(102)

  • 個人分類:C++
▲top
  • 11月 10 週三 201017:44
  • C++ inline

inline 這個關鍵字是使用在function前面
inline 所宣告的function並不會有程式本體 
而是像巨集(define)一樣 會直接展開到呼叫他的地方
inline的優點
在類別(class)中 我們常需要使用一個function將一個變數傳出去 比方說 
int CMyClass::GetValue()
{
  return m_nValue;
} 
我們知道 function的呼叫 是非常花CPU時間的 而function裡面卻只有傳回一個數值而已
這樣的動作 對於CPU的使用非常沒有效率 
當然 我們可以將這個變數改成public 讓其他人直接來存取
不過這是一個不好的寫法
比較好的寫法是使用inline function 來解決這個問題
經過inline所宣告的function會直接展開在程式碼內
所編出來程式碼就會直接去存取那個參數 省略了呼叫function的時間浪費
inline與#define的比較
inline 其實就是將一個function直接展開到程式碼內
這樣的功能 透過巨集也可以達到 不過巨集跟inline還是有些差異的
1. 巨集當然不可能將public以外的變數傳出去 inline可以
2. 巨集跟inline有時候結果會不同 如下所示
#define D_TRIPLE(n) (n+n+n)
int GetValue();
inline int I_TRIPLE(int n)
{
  return n+n+n;
}
void main()
{
  int a = 1;
  int b = 1;
  int r1 = D_TRIPLE(GetValue());
  int r2 = I_TRIPLE(GetValue());
} 
r1是使用巨集 他會將GetValue()展開到程式碼中三次 如此r1是將三次呼叫GetValue()的值相加
r2是使用inline function他只會呼叫GetValue()一次 之後便將這個值相加起來(三個相加)
inline的使用
inline的使用非常簡單 只需要在function宣告前加上inline即可(如前面範例所示)
另外 如果將function的內容直接寫在類別(class)宣告中的話 編譯器會直接把他當做inline
例如
class CMyClass
{
  int m_nValue;
  int GetValue()
  {
    return m_nValue;
  };
} 
以上的GetValue()並沒有宣告成inline 但是編譯器還是會直接將他當作inline function
inline的使用效益問題
最後 一個function是否要用inline來展開的決定權 還是在編譯器手上
編譯器會自己評估 將這個function用inline來展開合不合效益
如果說程式碼很長 使用inline並不能節省多少CPU時間 然後卻又被呼叫很多次
編譯器會判斷不合效益 則會自動忽略掉inline 
(繼續閱讀...)
文章標籤

createps 發表在 痞客邦 留言(1) 人氣(12,232)

  • 個人分類:C++
▲top
  • 11月 10 週三 201016:39
  • C++ *.lib 和 *.dll 有什麼區別?

*.lib   和   *.dll   有什麼區別?
首先,Lib文件不是可執行文件,裡面沒有可執行部分。你知道DLL吧,實際上DLL是個二進制文件,裡面有可執行代碼、資源等等。但是我們的調用程序如何知道從哪裡開始執行該二進制文件哩?這時候必須給定一個接口,告訴調用DLL文件的程序在調用的時候從哪裡開始進入,或者說DLL中導出的函數入口有哪些。這時候才引入了Lib文件,因此Lib文件實際上是DLL導出函數的定義。 
(繼續閱讀...)
文章標籤

createps 發表在 痞客邦 留言(0) 人氣(1,014)

  • 個人分類:C++
▲top
1

最新文章

  • 中華電信、無線IP分享器和網路交換器如何連接
  • 把大容量的照片縮小, 圖片壓縮
  • 如何在Facebook建立應用程式
  • C# 網卡實體位置 record
  • C# 透過 WMI 取得硬碟序號 ( 物理 / 邏輯磁碟) record
  • C# ComboBox的MaxDropDownItems 沒反應 record
  • XNA 3D動畫,模型變型 record
  • C# 讀取大的圖檔時發生記憶體不足的問題。(轉載) record
  • C# 取得檔案類型 record
  • C# 是否為JPG檔案 record

文章精選

個人資訊

createps
暱稱:
createps
分類:
攝影寫真
好友:
累積中
地區:

熱門文章

  • (7,016)C# 讀檔寫檔 record
  • (267)C# 使用VB的Collection集合 record
  • (1,265)VB和C# 字串比較 record
  • (5,849)C# ListView record
  • (15,015)C# lock record
  • (16,198)C# Dictionary用法 record
  • (20,928)C# 十進制轉各進制,再轉回來 record
  • (11,658)C# 字串變數, 如何包含雙引號或反斜線 record
  • (24,873)C# GUID產生亂數字串 record
  • (1,411)C# VB的ReDim Preserve轉成C# record

文章分類

  • 網路硬體 (1)
  • Facebook (1)
  • 懷孕 (1)
  • 程式使用 (1)
  • XNA 4.0 (2)
  • DirectX (15)
  • Corona (29)
  • Lua (2)
  • Unity3D (3)
  • OS (2)
  • 輸入法 (1)
  • 大易 (1)
  • VB.NET (2)
  • Shader (1)
  • 技巧 (2)
  • 笑話 (1)
  • 創業 (4)
  • FTP (2)
  • SQL (1)
  • 歌曲 (4)
  • 物理 (1)
  • Apple (3)
  • Game (1)
  • Game (1)
  • C++ (4)
  • XNA (12)
  • GRD3 (1)
  • 喜歡的歌 (1)
  • C# (87)
  • 國外旅遊 (2)
  • 未分類文章 (1)

文章搜尋

誰來我家

參觀人氣

  • 本日人氣:
  • 累積人氣: