【发布时间】:2012-02-23 18:33:40
【问题描述】:
我最近对代码进行了一些调整,其中我必须更改函数中的形式参数。最初,参数类似于以下(注意,该结构之前是 typedef 的):
static MySpecialStructure my_special_structure;
static unsigned char char_being_passed; // Passed to function elsewhere.
static MySpecialStructure * p_my_special_structure; // Passed to function elsewhere.
int myFunction (MySpecialStructure * p_structure, unsigned char useful_char)
{
...
}
进行更改是因为我可以在编译前定义和初始化 my_special_structure 并且 myFunction 从未更改它的值。这导致了以下变化:
static const MySpecialStructure my_special_structure;
static unsigned char char_being_passed; // Passed to function elsewhere.
static MySpecialStructure * p_my_special_structure; // Passed to function elsewhere.
int myFunction (const MySpecialStructure * p_structure, unsigned char useful_char)
{
...
}
我还注意到,当我在我的程序上运行 Lint 时,有几个 Info 818 引用了许多不同的函数。该信息指出“指针参数'x'(第253行)可以声明为指向const”。
现在,关于上述问题,我有两个问题。首先,关于上面的代码,由于 MySpecialStructure 中的指针和变量都没有在函数内改变,将指针也声明为常量是否有益?例如-
int myFunction (const MySpecialStructure * const p_structure, unsigned char useful_char)
我的第二个问题是关于 Lint 信息。如果函数没有改变它的值,那么将指针声明为常量形式参数有什么好处或缺点……即使你传递给函数的东西从未被声明为常量?例如-
static unsigned char my_char;
static unsigned char * p_my_char;
p_my_char = &my_char;
int myFunction (const unsigned char * p_char)
{
...
}
感谢您的帮助!
为澄清而编辑 -
声明一个指向const的指针或一个const指向const的指针-作为形式参数有什么好处 >?我知道我可以做到这一点,但我为什么要……特别是在传递的指针和它指向的数据未声明为常量的情况下?
【问题讨论】:
标签: c optimization embedded