如果函数的参数的int *check(register int,register int);存储类声明为其他存储类,则以下代码显示错误.
我使用GNU GCC Compiler在Code :: Blocks 10.05 IDE上编译了这段代码.错误背后的原因是什么?它是编译器特定的错误还是一般错误?代码部分从这里开始:
int *check(register int, register int);
int main()
{
int *c;
c = check(10, 20);
printf("%d\n", c);
return 0;
}
int *check(register int i,register int j)
{
int *p = i;
int *q = j;
if(i >= 45)
return (p);
else
return (q);
}
Run Code Online (Sandbox Code Playgroud)
int *check(register int i,register int j)
{
int *p=i;
int *q=j;
Run Code Online (Sandbox Code Playgroud)
键入的错配p q和i j.也许你想要的是:
int *check(int i, int j)
{
int *p=&i;
int *q=&j;
Run Code Online (Sandbox Code Playgroud)
更正:注意register不能使用&.此外,关键字的register用法很少,因为编译器通常会忽略它并进行优化.