加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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’的多个定义;为什么?
第二个问题是我不知道我安排代码是好还是不好的习惯.有人给我一些好建议吗?当代码很大时,我通常把声明放在h文件中并用c / cpp写出函数的定义.然后使用主c / cpp来满足主要功能.有人可以给我一些关于编写代码的好建议,我是一个新的学习者.
谢谢.

解决方法

您必须记住的第一件事是C和C是不同的语言,因此对全局声明的变量有不同的规则.并且您确实多次定义全局变量:一次在main.c文件中,一次在ke.c文件中.

这是因为您在头文件中定义了变量,您在两个源文件中都包含该变量.您应该做的是在头文件中声明变量,然后在单个源文件中定义它.

例如,您应该在头文件中

extern int a;

在一个源文件中:

int a;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读