我最近对代码进行了一些调整,其中我必须更改函数中的形式参数。最初,该参数类似于以下内容(注意,该结构之前已进行类型定义):
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_struct,并且 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
or a const
指向const
- 作为形式参数?我知道我can这样做,但为什么我想...特别是在传递的指针和它指向的数据未声明为常量的情况下?