使用C ++进行编译时,我经常会遇到处理“形式参数”的错误消息,例如
error C2719: 'b': formal parameter with __declspec(align('16')) won't be aligned
我确实了解该错误,也了解b我所定义的函数的参数这一事实。
但是,参数是形式的意味着什么?是否可以有非正式参数?
我确实注意到“形式参数”一词也出现在其他语言中,所以我认为它是一个更通用的术语,不一定特定于C语言家族?某些语言子集支持非正式参数吗?
在看到答案之后,最后一个问题是:那些形式参数和实际参数来自何处?它起源于C标准,还是在某种抽象语言演算中这样调用它的效果?
有正式参数和实际参数:
void foo(int arg); //arg is a formal parameter int main() { int val = 1; foo(val); //val is an actual parameter }
从C ++ Standard开始:
1.3.1形式参数(参数)
作为函数声明或定义的一部分或在异常处理程序的catch子句中声明的对象或引用,在进入函数或处理程序时获取值;在以逗号分隔的列表中的标识符,该标识符以类似函数的宏定义形式紧跟在宏名称之后的括号内;或模板参数。参数也称为形式参数或形式参数。
1.3.10实际参数(参数)
在函数调用表达式中以括号分隔的逗号分隔列表中的表达式,在函数式宏调用,throw操作数或表达式中以逗号分隔的逗号分隔列表中的预处理标记序列,模板实例化中以尖括号为边界的逗号分隔列表中的type-id或template-name。也称为实际参数或实际参数。