我收到了错误:
复杂'的冲突类型。(complex.h的第4行)复杂'的前一个声明。曾在这里。 (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);
}
}
}
我不知道是否需要所有的头文件,但这里有复杂的情况。
typedef struct {
int real;
int img;
} complex;
答案 0 :(得分:3)
在complex.h
中(我假设这是一个自定义标题,而不是官方标题),您需要添加标题保护。这可以防止complex_IO.h
和complex_Arith.h
两次处理它。请阅读here以获取更多信息。
/* complex.h */
#ifndef COMPLEX_H_INCLUDED__
#define COMPLEX_H_INCLUDED__
typedef struct {
int real;
int img;
} complex;
#endif
此外,您应该将其重命名(或直接指向它在文件系统中的位置),因为它already exists作为标准标题。
对于您的其他错误,变量未在程序中定义,从而导致编译错误。
答案 1 :(得分:2)
关于第二个错误:
num1,num2和ans未声明。 (首次使用此功能)
这些变量根本没有在任何地方声明。
你应该在main
:
int main (void){
boolean quit=FALSE;
boolean showmenu=TRUE;
int menu_sel;
complex num1, num2, ans; // <<<<<<<<<<<<<<
...