头文件重复定义有关问题
头文件重复定义问题
头文件 head.h 的定义如下,已经用#ifndef #define #endif 来防止冲文件被重复定义了但是编译的时候还是提示
int count=0; /* 学生数量的计数器; */
char subject[SUMJECT_NUM][20];// 学科名
被重复定义 该怎么解决这个问题,有什么问题请指出 谢谢
------解决方案--------------------
变量定义最好不要放在头文件里
------解决方案--------------------
更乱了,试试
头文件 head.h 的定义如下,已经用#ifndef #define #endif 来防止冲文件被重复定义了但是编译的时候还是提示
int count=0; /* 学生数量的计数器; */
char subject[SUMJECT_NUM][20];// 学科名
被重复定义 该怎么解决这个问题,有什么问题请指出 谢谢
- C/C++ code
#ifndef _HEAD_H #define _HEAD_H #include <stdio.h> #include <string.h> #include <stdlib.h> #define SUMJECT_NUM 3 #define MAX_SRUDENT 100 struct student// 学生属性 { char std_num[10]; char name[20]; float sco[SUMJECT_NUM]; float avg; }; int count=0; /* 学生数量的计数器; */ char subject[SUMJECT_NUM][20];// 学科名 typedef struct student * poit_List ; void swap(poit_List *a,poit_List *b); void mutu(void); void F_input(poit_List *List); void file_out(poit_List *List); void out(poit_List *List); poit_List * cread_student(poit_List *List); void check_studend(poit_List *List); void Modify(poit_List *List); void Delete(poit_List *List); void sort(poit_List *List); void Add(poit_List *List); void sub(poit_List *List); #endif
------解决方案--------------------
变量定义最好不要放在头文件里
------解决方案--------------------
更乱了,试试
- C/C++ code
//.h文件 #ifndef _HEAD_H #define _HEAD_H #include <stdio.h> #include <string.h> #include <stdlib.h> #define SUMJECT_NUM 3 #define MAX_SRUDENT 100 struct student// 学生属性 { char std_num[10]; char name[20]; float sco[SUMJECT_NUM]; float avg; }; // int count=0; /* 学生数量的计数器; */ // char subject[SUMJECT_NUM][20];// 学科名 extern int count; extern char subject[SUMJECT_NUM][20]; typedef struct student * poit_List ; void swap(poit_List *a,poit_List *b); void mutu(void); void F_input(poit_List *List); void file_out(poit_List *List); void out(poit_List *List); poit_List * cread_student(poit_List *List); void check_studend(poit_List *List); void Modify(poit_List *List); void Delete(poit_List *List); void sort(poit_List *List); void Add(poit_List *List); void sub(poit_List *List); #endif //.c文件 #include "head.h" #define SUMJECT_NUM 3 #define MAX_SRUDENT 100 int count=0; /* 学生数量的计数器; */ char subject[SUMJECT_NUM][20];// 学科名
------解决方案--------------------
你把代码打包 上传出来 直接改你的代码 这样比较好 说半天也不能解决问题 说不定是别的问题引起的
------解决方案--------------------
给个例子吧:
- C/C++ code
// cat count.h # ifndef _COUNT_H_ # define _COUNT_H_ extern int counter; int get_counter(); void set_counter(int); # endif // _COUNT_H_
------解决方案--------------------
gcc -Wall -o main main.c count.c
Linux没有问题。
如果是Windows下面,你要把这些文件都加到工程里面去。
------解决方案--------------------
假定有以下几个头文件及其包含关系为:
File1.h,file2.h,file3.h,file4.h,file5.h,main.cpp
那么:file3.h包含file1.h,file2.h,file4.h包含file1.h,file2.h,file5.h包含file3.h,file4.h。如许就会导致在file5中对file1和file2的反复包含,编译时就会报错。
解决方法:
1:应用#ifndef
#define
#endif
即每个文件在定义时都写成以下情势(以file1.h为例):
#ifndefH_FILE1
#defineH_FILE1
#include<stdio.h>
#include<math.h>
…..
#endif
File3.h:#ifndefH_FILE3
#defineH_FILE3
#include<stdio.h>
#include<math.h>
#inlcude”file1.h”
#include”file2.h”
…..
#endif
方法二:在每个文件的头部定义:#pragmaonce(用于解释本文件中的内容只应用一次)
例:fiel1.h:
#pragmaonce
#include<stdio.h>
#include<math.h>
…..
File3.h: