函数原型是否在C中转换您的实际参数?
如果您阅读了任何函数的linux手册页,并且原型在任何形式参数中使用了诸如static或restrict之类的关键字,那么如果类型仍然匹配,C编译器是否会自动转换您的var 例如: 函数原型:int Function_nameint*restrict param1,static int param2 节目:函数原型是否在C中转换您的实际参数?,c,linux,parameters,posix,keyword,C,Linux,Parameters,Posix,Keyword,如果您阅读了任何函数的linux手册页,并且原型在任何形式参数中使用了诸如static或restrict之类的关键字,那么如果类型仍然匹配,C编译器是否会自动转换您的var 例如: 函数原型:int Function_nameint*restrict param1,static int param2 节目: int *my_var1; int my_var2; //initialization (..) function_name(my_var1, my_var2); (..) 函数名是
int *my_var1;
int my_var2;
//initialization
(..)
function_name(my_var1, my_var2);
(..)
函数名是否转换或处理我的变量,就像在每种情况下使用restrict和static声明一样,因为类型仍然相同?单个int参数不能是静态的,没有任何意义。请提供真实的例子,以确保我们谈论的是相同的事情
当谈到限制时,它被用来表示它限定的指针是或多或少指向特定对象的唯一指针,我在简化。因此,谈论将指针转换为受限指针是没有意义的,限定符是否真正适用取决于指针的使用方式
一般来说,参数将被转换为与函数期望的匹配(如果可能)。单个int参数不能是静态的,没有任何意义。请提供真实的例子,以确保我们谈论的是相同的事情
当谈到限制时,它被用来表示它限定的指针是或多或少指向特定对象的唯一指针,我在简化。因此,谈论将指针转换为受限指针是没有意义的,限定符是否真正适用取决于指针的使用方式
一般来说,参数将被转换为与函数期望的匹配(如果可能)。首先,int function_nameint*restrict param1,static int param2;这是无效的。在gcc 8.3下编译时,将出现以下错误:
<source>:1:52: error: storage class specified for parameter 'param2'
int function_name(int* restrict param1, static int param2);
转换为volatile const int*限制volatile const:
没有任何错误
函数名是否转换或处理我的变量,就像在每种情况下使用restrict和static声明一样,因为类型仍然相同
对。变量隐式转换为函数参数列表中的类型。它们将被视为在函数中声明。首先,int-function\u-nameint*restrict-param1,static-int-param2;这是无效的。在gcc 8.3下编译时,将出现以下错误:
<source>:1:52: error: storage class specified for parameter 'param2'
int function_name(int* restrict param1, static int param2);
转换为volatile const int*限制volatile const:
没有任何错误
函数名是否转换或处理我的变量,就像在每种情况下使用restrict和static声明一样,因为类型仍然相同
对。变量隐式转换为函数参数列表中的类型。它们将被视为在函数中声明。,static int param2;这是无效的。您可以,int param2[static];但这并不意味着什么,静态int参数2;这是无效的。您可以,int param2[static];但这并不意味着什么。@KamilCuk哦,对不起,你当然是对的。我需要更多地使用它谢谢。@KamilCuk噢,对不起,你当然是对的。我需要更多地使用它谢谢
volatile const int * restrict volatile const other_p = p;