【发布时间】:2014-04-19 22:03:44
【问题描述】:
将指向静态结构的指针传递给函数是否安全?
我有这样的事情:
mymodule.c:
static MYEVENT_STRUC_T event;
uint_32 _myRtos_set_event(MYEVENT_STRUCT_T* event_ptr, uint_32 mask);
uint_32 mymodule_set_event(uint_32 event_mask){
/* Kernel function */
/* Defined outside mymodule.c,*/
/* Is it safe to call it with &event? */
return _myRtos_set_event(&event, event_mask);
}
【问题讨论】:
-
先验,这似乎是安全的。注意:您忘记了定义中的输入参数
MYEVENT_STRUCT_T* event_ptr,因此_myRtos_set_event(event, event_mask); -
绝大多数不处理内存分配的函数都会对静态变量的地址感到满意。例如,您不能调用
realloc或free并将指向静态变量的指针传递给它,但大多数函数是安全的。
标签: c static-variables