【发布时间】:2013-10-29 02:02:44
【问题描述】:
在创建需要输入的 C 函数时,我倾向于这样做:
function(unsigned char *bytes, unsigned int bytelen) { …
现在,我正在编写的项目中有一个函数,该函数需要一个特定的 bytelen,正好是 256 个无符号字符。
所以,我尝试了以下似乎可行的方法:
function(unsigned char bytes[256]) { …
然而,测试(使用 GCC),当我将 1024 个无符号字符传递给函数时,它不会在编译时失败。向该函数添加printf,它甚至可以毫无问题地打印那些 1024 个无符号字符。
这不是我的预期或意图,因为 - 最终 - 函数的行为就像我会使用 function(unsigned char *bytes) { …。
当然,我可以进行通常的健全性检查,看看是否通过了预期的长度,如果输入不完全是 256 个字符,则以编程方式失败。但是没有办法在函数的参数中显式地预定义该限制吗? (或者我做错了吗?如果,我会很感激我在哪里做错了。)
【问题讨论】:
-
可以传递具有
unsigned char bytes[256]字段的结构的地址。
标签: c parameters parameter-passing