有时,在使用C语言编码时,会遇到重复定义的错误,那么有什么措施可以避免这种错误呢?

1,公用的符号前加上跟其所在源文件有 关的前缀。比如:所有在 gfx.c 里的函数都加上前缀“gfx_”。

2,分两个头文件对于一个C文件, 一个是内部使用的函数,另外一个是提供给外部使用的函数。

3,所有的全局变量定义道c文件中,然后头文件中使用extern声明。

例如,我们有一个叫“counter”的变量,如果想让它成为公用的, 我们在一个源码程序(只在一个里面)

的开始定义它:“int counter;”,再在相关的 header 档里声明它:“extern int

counter;”。

4,尽量不要在头文件中引用其他的头文件,在C文件中将所需要的头文件在本C的头文件之前引用。

例如:a.c用了b.h头文件,a.h中也需要使用b.h中的某些类型定义。 可以在a.h中使用声明的办法,然后在

C文件中引用b.h, a.h中可能会使用b.h中的类型class B

a.h

class B;

a.c

#include "b.h"

#include "a.h"

c语言一个文件里重复多次定义函数,C语言里的重复定义问题的解决方案相关推荐

  1. C语言的文件随机访问fseek()和ftell()函数

    C语言的文件随机访问fseek()和ftell()函数 我们要讨论3个问题:fseek()和ftell()函数的工作原理.如何使用二进制流.如何让程序可移植. fseek()与ftell()的工作原理 ...

  2. 从 Go 语言一个文件描述符错误讲起

    转载地址:https://mp.weixin.qq.com/s/MGMWkOON3DBkSjBKxGr7Kw 先来看一个 demo: 1 package main2 3 import (4 " ...

  3. 计算机二级c语言out文件可以改吗,国家二级计算机c语言考试 程序设计题最后一题 怎么改out.dat文件 直接在文件里面给出答案...

    1.运行考试系统打开编程题(第三大题),软件会自动启动vc++6.0,然后在需要考生编写的函数代码里加一个分好":"其他什么都不做. 2.compile->link-> ...

  4. linux下c语言读写文件操作,linux下的系统级c语言文件读写操作

    最近初次接触Linux这么高端的东西,有种进城的感觉.进了linux,发现城里人说话做事的方式都很不一样. 个人感觉,初次接触linux主要的痛点在于命令行交互的方式,这就要求我接受城里人的思维,wh ...

  5. c语言中 文件的字符串输入函数是6,【C语言】文件操作及输入输出格式(文件常用的库函数)...

    参考中国大学MOOC 浙江大学翁恺C语言程序设计在线课程 目录 常用文件输入输出符号格式及标准 常用应用对象为文件的库函数简介: 库函数部分: 文件创建.打开.阅读: 数据块写入读出(只有这两个函数可 ...

  6. c语言遍历文件内容_C/C++编程笔记:C语言开发电脑益智游戏【扫雷】(源代码分享)...

    咱们先和大家说好,本次C语言开发的扫雷游戏是通过Easy X实现的,但是很多和我一样的新手,一开始不知道Easy X是什么,到时源码拿过去写之后,运行报错.Easy X是很多和我一样的新手在学习的时候 ...

  7. c语言ftell的作用,C语言的文件随机访问fseek()和ftell()函数

    http://blog.csdn.net/libing403/article/details/73158972 我们要讨论3个问题:fseek()和ftell()函数的工作原理.如何使用二进制流.如何 ...

  8. C语言 define 定义函数 - C语言零基础入门教程

    目录 一.define 简介 二.define 定义函数 1.define 定义不带参数的函数 2.define 定义带参数的函数 三.define 定义函数陷阱 1.define 函数陷阱一 2.d ...

  9. c语言利用文件体写在桌面上,在C语言中怎样新建一个文件夹?

    满意答案 JacinthLancet 推荐于 2017.10.12 采纳率:56%    等级:12 已帮助:35899人 函数名: mkdir 功 能: 建立一个目录(文件夹) 用 法: int m ...

最新文章

  1. CXF 调用 .net webservice
  2. 【Android 组件化】路由组件 ( 路由组件结构 )
  3. JavaScript电话号码正则
  4. C# 在DataGridView中,点击单元格调出 TreeView控件 或 ListBox控件
  5. windows编译libevent时报告“缺少print_winsock_errors.obj”的解决
  6. Visual C# 2008+SQL Server 2005 数据库与网络开发--13.1.1 菜单创建
  7. 炫酷实用 7款jQuery/HTML5图片应用
  8. tl r402路由器设置_tp-link TL-WR700N 迷你型路由器设置记录
  9. 利用OpenCV在picture控件中显示图片
  10. idea建springcloud项目_idea创建springcloud项目图文教程(EurekaServer注册中心)
  11. html 套壳成桌面应用
  12. Android植入Wooboo广告教程
  13. 2015我的校招季,阿里、搜狗、百度、蘑菇街面试总结
  14. pairs和iparis
  15. 羊年内核堆风水: “Big Kids’ Pool”中的堆喷技术
  16. java实现下载并选择保存路径
  17. 真·人机合一!MIT推出人形机器人“爱马仕”,远程遥控操作救援
  18. mui 沉浸式状态栏
  19. 警告:面临潜在的安全风险_HTML5网站展示:48个潜在的Flash演示
  20. 常用的console 的方法,你真的了解 console 吗

热门文章

  1. U盘变成RAW格式,数据如何恢复?
  2. TensorFlow CPU环境 SSE/AVX/FMA 指令集编译
  3. 百度搜索资源平台链接提交通道
  4. ZUCC_操作系统实验_Lab7进程通信---共享内存
  5. [Cue]emulator unknown skin name 'WVGA800'
  6. 详说SPA(单页应用)和MPA(多页应用)
  7. Unexpected token u in JSON at position 0报错如何解决?
  8. 1984年高考数学试题。
  9. 《小红牛》APP内测功能陆续上线
  10. 按键精灵什么是动态数组?如何使用动态数组?(新手进阶)