WinCE 6.0 的C/C++新運算元 _countof()

WinCE 6. 0 增加了一個新的 _countof() 操作元

一般來說 在 C 與 C++ 裡面取一個 Object 大小是用 sizeof()

因此 sizeof(char)  sizeof(int) 可以取得 char, int 的大小

一般來說 char 是 1(1 byte), int 是 (4bytes, 32bits CPU 的基本運算字 word)

而求陣列大小 可以用

int i[10]

array_size =  (sizeof(i)/sizeof(int))

array_size == 10

 

但是 如果是

int i[10]

int *x = i;

sizeof(x)/sizeof(int) = ?

要看 CPU 與 Compiler 設計,因為此時 x 是 pointer 大小是,只有指標的大小,而指標大小通常跟 CPU 的定址方法有關,在目前 x86 32bits flat program mode /ARM 裡面通常也是 32bits。

 

但是如果用 _countof()  就可以解決這個問題,但是要注意的是這是一個非標準的擴充運算元只有 Window CE 6.0 支援

 

Ref.http://blogs.msdn.com/ce_base/archive/2007/05/08/so-long-to-dim-array-size-and.aspx

 

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: