Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
函数原型是否在C中转换您的实际参数?_C_Linux_Parameters_Posix_Keyword - Fatal编程技术网

函数原型是否在C中转换您的实际参数?

函数原型是否在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); (..) 函数名是

如果您阅读了任何函数的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);

(..)
函数名是否转换或处理我的变量,就像在每种情况下使用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;