冲突类型错误和一元*的无效类型参数有int

时间:2016-05-06 15:57:19

标签: c++ c

我的程序非常简单,我得到的错误如下:

conflicting type of 'f' 

previous declaration of 'f' was here

error : initializer element is not computable at load time 

in function queue_ready: 

invalid type argument of unary '*' (have'int') 

in function dequeue_ready : 

invalid type argument of unary '*' (have'int') 

我的错误在哪里?

#include<stdio.h> 

int Queue_ready[1000]; 
int *r ;
int *f ; 
r=&Queue_ready[0];
f=&Queue_ready[0];

void queue_ready (int process) 
{
   *r=process; 
    r = r+1;
} 

void dequeue_ready (void) 
{
   *f = 10000; 
   f=f+1;
}

int main() 
{
   queue_ready(1); 
   queue_ready(2);
   printf("%d %d" , Queue_ready[0] ,Queue_ready[1]); 
   dequeue_ready();
   dequeue_ready();
   return 0;  
} 

1 个答案:

答案 0 :(得分:10)

问题在于:

int *r;
int *f; 
r=&Queue_ready[0];
f=&Queue_ready[0];

这些行位于函数之外。前两个是好的,因为它们声明变量,但接下来的两个不是因为它们是语句,并且在函数之外不允许使用语句。

您遇到“冲突类型”错误的原因是因为语句(编译器不期望)被读作声明。由于此“声明”未指定类型,因此它具有隐含类型int,它与类型int *的先前定义冲突。

因为您实际想要做的是初始化这些变量(而不是赋值),所以在声明它们时会这样做:

int *r = &Queue_ready[0];
int *f = &Queue_ready[0];
相关问题