C和C中的声明以及安排代码的习惯
发布时间:2020-12-16 10:09:19 所属栏目:百科 来源:网络整理
导读:我不知道这个问题属于什么,请花点时间阅读.它涉及C和C的差异以及编写代码的习惯;代码如下: 我把它分成3个文件; main.c #include"myh.h" unit_t *paa; int main() { paa=(unit_t*)malloc(sizeof(unit_t)); if(paa==NULL){ printf("out of memoryn"); exit(1
我不知道这个问题属于什么,请花点时间阅读.它涉及C和C的差异以及编写代码的习惯;代码如下:
我把它分成3个文件; main.c #include"myh.h" unit_t *paa; int main() { paa=(unit_t*)malloc(sizeof(unit_t)); if(paa==NULL){ printf("out of memoryn"); exit(1); } fuzhi(paa); printf("hello !%d",paa->number); free(paa->msg); free(paa); paa=NULL; return 0; } anohter c:ke.c #include"myh.h" void fuzhi(unit_t* pa) { pa->number=3; pa->msg=(char *)malloc(20); printf("fuzhi !"); } h文件:myh.h #ifndef P_H #define P_H #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct{ int number; char *msg; }unit_t; void fuzhi(unit_t* pa); int a; #endif 所以问题是当我使用C运行代码时它没有问题,但当我将其保存为cpp时,错误是’a’的多个定义;为什么? 解决方法
您必须记住的第一件事是C和C是不同的语言,因此对全局声明的变量有不同的规则.并且您确实多次定义全局变量:一次在main.c文件中,一次在ke.c文件中.
这是因为您在头文件中定义了变量,您在两个源文件中都包含该变量.您应该做的是在头文件中声明变量,然后在单个源文件中定义它. 例如,您应该在头文件中 extern int a; 在一个源文件中: int a; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |