热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C语言之模块化例子(编译环境CODEBLOCK,多文件编译)

一:建立子函数文件bii.c在子函数里实现一个很简单的功能,参数入口是字符串。代码如下#includevoidbill(char*

一:建立子函数文件bii.c

     在子函数里实现一个很简单的功能,参数入口是字符串。

代码如下

#include void bill(char *arg)
{printf("bill: you passed %s\n", arg);
}

二:将bill函数在lib.h头文件里声明

#ifndef LIB_H_INCLUDED
#define LIB_H_INCLUDED/*This is lib.h. It declares the functions fred and bill for users
*/void bill(char *);#endif // LIB_H_INCLUDED

三:主函数里添加头文件#include "lib.h"(因为文件在当前函数目录下,所以使用""双引号,如果是c自带的库函数需要使用#include )

主函数如下

#include
#include
#include "lib.h"
int main()
{//char *ser="hello";//fred(1);bill("Hello World");return 0;
}



然后将这两个.c文件,和.h头文件添加到工程里。

但是编译的时候出现了问题。问题图片如下



,找不到bill这个函数。很奇怪为什么?

后来网上找到答案。在这里设置。右键ill.c,选择properties,出现的对话框里bulid下面Debug,Release打上勾,再次编译就可以了。

可以看到在Release文件夹里有bill.o文件。和main.o文件,这个bill.o就是被main调用的。所以才可以找到,不打上勾的时候是无法编译出bill.o文件的。




经过测试可以知道,为什么我们在.h文件里也只是见到了调用函数的声明,我之前还想找到这个函数的源程序呢,其实是没有的,我们调用的是已经编译好的可执行文件呢。

这样可以看出我们的小程序的结构与调用系统自带的函数是一样的。就可以制作自己的子函数了。

这样就将功能一个个模块化,不仅这次工程可以使用,下次遇到同样功能的,也可以调用。

增加了重用性。同时使程序更加清晰。假如写的是几百行甚至万行的程序全部放在main里,那就显得很混乱呢。








推荐阅读
  • c语言二元插值,二维线性插值c语言
    c语言二元插值,二维线性插值c语言 ... [详细]
  • 实现系统调用
    实现系统调用一、实验环境​本次操作还是基于上次编译Linux0.11内核的实验环境进行操作。环境如下:二、实验目标​通过对上述实验原理的认识,相信 ... [详细]
  • 编译原理中的语法分析方法探讨
    本文探讨了在编译原理课程中遇到的复杂文法问题,特别是当使用SLR(1)文法时遇到的多重规约与移进冲突。文章讨论了可能的解决策略,包括递归下降解析、运算符优先级解析等,并提供了相关示例。 ... [详细]
  • 探讨了一个包含纯虚函数的C++代码片段,分析了其中的语法错误及逻辑问题,并提出了修正方案。 ... [详细]
  • 使用Matlab创建动态GIF动画
    动态GIF图可以有效增强数据表达的直观性和吸引力。本文将详细介绍如何利用Matlab软件生成动态GIF图,涵盖基本代码实现与高级应用技巧。 ... [详细]
  • 想把一组chara[4096]的数组拷贝到shortb[6][256]中,尝试过用循环移位的方式,还用中间变量shortc[2048]的方式。得出的结论:1.移位方式效率最低2. ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 数据类型--char一、char1.1char占用2个字节char取值范围:【0~65535】char采用unicode编码方式char类型的字面量用单引号括起来char可以存储一 ... [详细]
  • 本文通过分析一个具体的案例,探讨了64位Linux系统对32位应用程序的兼容性问题。案例涉及OpenVPN客户端在64位系统上的异常行为,通过逐步排查和代码测试,最终定位到了与TUN/TAP设备相关的系统调用兼容性问题。 ... [详细]
  • 深入理解Java SE 8新特性:Lambda表达式与函数式编程
    本文作为‘Java SE 8新特性概览’系列的一部分,将详细探讨Lambda表达式。通过多种示例,我们将展示Lambda表达式的不同应用场景,并解释编译器如何处理这些表达式。 ... [详细]
  • 本文详细介绍了如何在Windows操作系统中配置和使用Lex(Flex)与Yacc(Bison),包括软件的下载、安装以及通过示例验证其正确性的步骤。 ... [详细]
  • 编码unicode解决了语言不通的问题.但是.unicode又有一个新问题.由于unicode是万国码.把所有国家的文字都编进去了.这就导致一个unicode占用的空间会很大.原来 ... [详细]
  • 本文通过C++语言实现了一个递归算法,用于解析并计算数学表达式的值。该算法能够处理加法、减法、乘法和除法操作。 ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • Irish budget airline Ryanair announced plans to significantly increase its route network from Frankfurt Airport, marking a direct challenge to Lufthansa, Germany's leading carrier. ... [详细]
author-avatar
书友80433968_667
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有