【发布时间】:2017-07-15 16:29:42
【问题描述】:
我收到了错误:
'complex' 的冲突类型。(complex.h 的第 4 行)以前的'complex' 声明在这里。 (complex.h 的第 4 行)
还有
num1、num2 和 ans 未声明。 (在这个函数中第一次使用)
在主程序中。
#include <stdio.h>
#include "boolean.h"
#include "complex.h"
#include "complex_IO.h"
#include "complex_Arith.h"
int main (void){
boolean quit=FALSE;
boolean showmenu=TRUE;
int menu_sel;
while (!quit){
if (showmenu){
printf("1 Add.\n");
printf("2 Subtract.\n");
printf("3 Multiply.\n");
printf("4 Conjugate.\n");
printf("5 Negate.\n");
printf("6 Toggle Menu.\n");
printf("7 Quit.\n");
printf("Enter Selection:");
scanf("%d",&menu_sel);
}
else{
printf("Enter Selection (4 to turn menu on):");
scanf("%d",&menu_sel);
}
switch (menu_sel){
case 1: num1=Read_Complex();
num2=Read_Complex();
ans=Add_Complex(num1,num2);
Write_Complex(ans);
break;
case 2: num1=Read_Complex();
num2=Read_Complex();
ans=Subtract_Complex(num1,num2);
Write_Complex(ans);
break;
case 3: num1=Read_Complex();
num2=Read_Complex();
ans=Multiply_Complex(num1,num2);
Write_Complex(ans);
break;
case 4: num1=Read_Complex();
num2=Read_Complex();
ans=Conjugate_Complex(num1);
Write_Complex(ans);
break;
case 5: num1=Read_Complex();
num2=Read_Complex();
ans=Negate_Complex(num1);
Write_Complex(ans);
break;
case 6: showmenu=!showmenu;
break;
case 7: quit=TRUE;
break;
default: printf("%d is not a valid option.\n", menu_sel);
}
}
}
我不知道是否需要所有头文件,但这里是 complex.h:
typedef struct {
int real;
int img;
} complex;
【问题讨论】:
-
其他头文件是否包含complex.h?
-
是的。 Complex_Arith.h 和 Complex_IO.h 都可以
-
那么,你有问题......对吗?为了清楚起见,检查预处理的输出。
-
所以即使 complex_arith.c 和 complex_io.c 都使用 complex.h 也不应该在其他头文件中?
-
如果可行,您只能在两者中包含
complex.h。