當創建預期輸入C函數,我傾向於做這樣的:有沒有辦法預先定義C函數參數的預期長度?
function(unsigned char *bytes, unsigned int bytelen) { …
現在,我有一個項目我編碼,其中這樣的功能期待的正是256的無符號的特定bytelen
功能字符。
所以,我想這似乎工作如下:
function(unsigned char bytes[256]) { …
然而,測試一個(使用GCC),它不會在編譯的時候,當我經過1024個無符號字符的功能失效。將printf
添加到該函數中,它甚至可以毫無問題地打印這些1024個無符號字符。
這不是我所期望的或意圖的,因爲 - 最終 - 功能表現得好像我會用function(unsigned char *bytes) { …
。
當然,我可以進行通常的健全性檢查,看看是否通過了期望的長度,如果輸入不完全是256個字符,程序性失敗。但是沒有一種方法可以在函數的參數中明確地預定義該限制嗎? (還是我做錯了。如果,我將不勝感激,我錯在何處擡頭?)
可以傳遞具有'無符號字符字節[256]'字段的結構的地址。 – chux