我想确保一组函数在某些 C 代码中具有相同的签名。理想情况下,我将能够定义一个描述函数的返回值和参数的新类型,然后使用这个新类型声明我的函数集。
此外,有没有办法为此函数 typedef 的参数指定默认值?
最佳答案
/* define a typedef for function_t - functions that return void */
/* and take an int and char parameter */
typedef void function_t( int param1, char param2);
/* declare some functions that use that signature */
function_t foo;
function_t bar;
现在,当您定义函数时,如果它们使用的签名与 typedef 中的签名不同,则会出现错误。
void foo( int x, char c)
{
/* do some stuff */
return;
}
/* this will result in a compiler error */
int bar( int x, char c)
{
/* do some stuff */
return 1;
}
至于您的新问题(于 08 年 10 月 20 日添加):“此外,有没有办法为此函数 typedef 的参数指定默认值?”
不,没有办法向 typedef 添加默认参数。当然不是在 C 中,它根本不支持默认参数。即使在 C++ 中你也不能这样做,因为参数的默认值不是类型的一部分。事实上,从基类覆盖虚方法的类可以为默认参数指定不同的值(甚至完全删除默认值) - 但是,通常不应该这样做,因为它只会引起混淆( http://www.gotw.ca/gotw/005.htm )。
如果您使用的是 C++,您可能能够使用以下之一(或组合)获得您想要的行为:
但是,如果不了解您想要完成的工作的更多细节,就很难提出建议。而且我认为结果很可能非常糟糕。
关于c - 如何在 C 中的一组函数声明上强制执行函数签名?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/188532/