Contents:

1.配置文件(通常以 ini 结尾)

2.makefile文件 (Linux)

PS: 这篇文章的内容,不太理解。


一、配置文件

本文以一个实际的小软件为例,介绍了C语言中配置文件的读取方法和重要的文件操作函数的使用方法,为相关软件开发项目提供了有益的参考

参考链接:让你提前认识软件开发(12):配置文件读取及文件操作

CSDN博客 https://blog.csdn.net/zhouzhaoxiong1227/article/details/23552667

2.4本文中使用的读取配置操作函数

本文中使用的读取配置操作函数为GetPrivateProfileInt  和  GetPrivateProfileString,对它们的详细说明如下:

(1) GetPrivateProfileInt 函数

作用:从配置文件中读取一个值,并将结果转换为整型数据后保存到变量中。

原型:UINT GetPrivateProfileInt(LPCTSTR lpAppName, LPCTSTR lpKeyName, INT nDefault, LPCTSTR lpFileName);

各参数的意义:

1) lpAppName:配置文件中的大项,用[]括起来的部分(如2.3节的红色字体所示)。

2) lpKeyName:各大项下小项的字段名称,如2.3节中General下的LocalPath。

3) nDefault:如果配置文件中没有这个配置项,那么代码中取的默认值。

4) lpFileName:配置文件名,如本文中的Config.ini。

举例:如本程序要获取MsgCount的值,则代码如下:

            int  iMsgCount = 0;

            iMsgCount = GetPrivateProfileInt("EmployeeInfo", "MsgCount", 0, “Config.ini”);

  (2) GetPrivateProfileString 函数

作用:从配置文件中读取一个值,并将结果转换为字符串型数据后保存到变量中。

原型:DWORD GetPrivateProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpDefault, LPTSTR lpReturnedString, DWORD nSize, LPCTSTR lpFileName);

各参数的意义:

1) lpAppName:配置文件中的大项,用[]括起来的部分(如2.3节的红色字体所示)。

2) lpKeyName:各大项下小项的字段名称,如2.3节中General下的LocalPath。

3) lpDefault:如果配置文件中没有这个配置项,那么代码中取的默认值。

4) lpReturnedString:代码中存放读取值的字符数组。

5) nSize:一般为lpReturnedString字符数组的大小。

6) lpFileName:配置文件名,如本文中的Config.ini。

举例:如本程序要获取FilePrefix的值,则代码如下:

        char szFilePrefix[100] = {0};

       GetPrivateProfileString("General", "FilePrefix",   "EmployeeInfo", szFilePrefix, 100, strINIFILE);

2.5本文中使用的FTP操作函数

本文中使用的FTP操作函数为GetFtpConnection和PutFile,对它们的详细说明如下:

         (1) GetFtpConnection函数

作用:连接FTP服务器。

原型:CFtpConnection* GetFtpConnection(LPCTSTR pstrServer, LPCTSTR pstrUserName, LPCTSTR pstrPassword, INTERNET_PORT nPort, BOOL bPassive);

各参数的意义:

1) pstrServer:服务名,即FTP服务器的IP地址。

2) pstrUserName:用户名,即登录FTP服务器的用户名。

3) pstrPassword:密码,即登录FTP服务器的密码。

4) nPort:端口号,该参数默认值为INTERNET_INVALID_PORT_NUMBER。

5) bPassive:该项的默认值为FALSE。

        (2) PutFile函数

作用:FTP上传文件。

原型:BOOL PutFile(LPCTSTR pstrLocalFile, LPCTSTR pstrRemoteFile, DWORD dwFlags, DWORD_PTR dwContext);

各参数的意义:

1) pstrLocalFile:带存放路径的本地文件名。

2) pstrRemoteFile:带存放路径的远端文件名,即文件存放在FTP服务器的何处。

3) dwFlags:标识,该项取默认值FTP_TRANSFER_TYPE_BINARY。

4) dwContext:上下文标识,该项取默认值1

二、Makefile文件

makefile用于Linux下整个工程的编译,对于Linux下的C/C++语言的编译是至关重要的。

本文以实际的C源程序为例子,介绍如何使用makefile来编译Linux下的C语言工程,为相关开发工作的开展提供了参考。

【关键词】

makefile  C语言  Linux  编译  开发

1、什么是makefile?

makefile是什么?如果你写的程序只是在Windows下运行,那么很有可能不知道有这个玩意儿。而如果你要在Linux下编译并运行程序,那么你几乎不可避免地要和makefile打交道。

makefile是一个文件,里面定义了一系列的规则来指定一个工程中的哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至进行更为复杂的功能操作。简单点说,makefile就是Linux下的一个编译调度器。

2、makefile的语法规则

既然是一个编译调度器,那么它就会有自己的一套规则。makefile的规则如下:

target ... : prerequisites ...

command

说明:

(1) target就是一个目标文件,也就是在这个步骤中,我们想要输出的文件名(可以包括后缀)。

(2) prerequisites是要生成那个target所需要的文件,相当于在Windows工程下我们要得到exe文件所需要的源代码文件。

(3) command是make需要执行的命令,也就是如何利用prerequisites来生成target。注意,command行要以TAB键开头。

3-5、以一个实际的Linux下的C程序工程(将一个字符串中的小写字母转换成大写字母)为例,介绍makefile的编写方法及用法。

参考:让你提前认识软件开发(17):makefile文件的书写及应用

   CSDN博客 https://blog.csdn.net/zhouzhaoxiong1227/article/details/24812071

6、总结

本文对makefile文件的语法规则进行了介绍,并用一个实际的C程序工程来说明了它的用法。

在编写和使用makefile文件的过程中,我们要注意以下问题:

(1) 要牢记makefile的语法,将不同程序文件的依赖关系理清楚。

(2) 命令(command)行一定要以TAB键开头,不要误写成了空格。

(3) 在makefile文件的最后,要将没有用的中间文件(如本例中的.o文件)清理掉。

(4) 对于make命令中出现的错误或警告,一定要尽量修改。

【阅读笔记】《C程序员 从校园到职场》第六章 配置文件,makefile 文件 (Part 2)的更多相关文章

  1. 【阅读笔记】《C程序员 从校园到职场》第二章 学校到职场

    一.代码规范: 1.变量命名(让人一眼看它是什么意思,要做什么操作),定义并初始化 2.函数命名规范(函数的功能)在主函数之前进行声明. 在实际项目中,一般不在函数调用者的内部来对被调函数进行声明,而 ...

  2. 【阅读笔记】《C程序员 从校园到职场》第七章 指针和结构体

    原文地址:让你提前认识软件开发(13):指针及结构体的使用 CSDN博客 https://blog.csdn.net/zhouzhaoxiong1227/article/details/2387299 ...

  3. 【阅读笔记】《C程序员 从校园到职场》第三章 程序的样式(大括号)

    参考: https://blog.csdn.net/zhouzhaoxiong1227/article/details/22820533 一..初始化数组变量 在实际的软件开发项目中,变量在使用前应初 ...

  4. 【阅读笔记】《C程序员 从校园到职场》第八章 算法和协议(Part 2)

    原文链接: 让你提前认识软件开发(19):C语言中的协议及单元测试示例 CSDN博客 https://blog.csdn.net/zhouzhaoxiong1227/article/details/2 ...

  5. 【阅读笔记】《C程序员 从校园到职场》第五章 内存操作

    参考:   让你提前认识软件开发(8):memset()与memcpy()函数  https://blog.csdn.net/zhouzxi/article/details/22478081 让你提前 ...

  6. 【阅读笔记】《C程序员 从校园到职场》第六章 常用文件操作函数 (Part 1)

    参考链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/24926023 让你提前认识软件开发(18):C语言中常用的文件操作函数总结 ...

  7. 【阅读笔记】《C程序员 从校园到职场》第四章 变量和函数

    参考: Contents: 一.数据类型(对基本数据类型进行重定义——规范化) 二.变量和函数  (命名规则,注意事项) 三.静态变量及其使用 一.数据类型(对基本数据类型进行重定义——规范化) 1. ...

  8. 《C程序猿从校园到职场》带领大家从校园走向职场

    七夕节刚过.就有好消息传来:本人新书<C程序猿从校园到职场>正式出版并在各大电商平台上发售了! 以下.让我们一起来赞赏一下纸质书的"风採"吧. 本书文件夹 第1章 概述 ...

  9. 《C程序猿从校园到职场》勘误

    (本人正在參加2015博客之星评选.诚邀你来投票,谢谢:username=zhouzxi">http://vote.blog.csdn.net/blogstar2015/candida ...

随机推荐

  1. laravel----------php7.0.12 laravel 链接sqlserver数据库

    https://www.microsoft.com/en-us/download/details.aspx?id=20098 下载最后一个,然后这个工具可以将dll扩展下载下来,选择一个空白的文件夹就 ...

  2. Java-HttpURLConnection详细说明与实例

    URLConnection 类是一个抽象类,代表应用程序和URL之间的通信连接,此类的实例可用于读取和写入此URL引用的资源.URLConnection 允许使用GET,POST或者其他HTTP方法请 ...

  3. android layout文件优化

    性能优化1--UI优化 1.使用系统为我们提供了几个抽象的标签①include:重用include中layout属性指定一个外部布局文件,通过该方式则不需要把这个布局文件在该代码中重复的写一遍了. 若 ...

  4. Linux 系统查看对应公网映射地址

    最近在解决网络问题时,需要查看本机的出口公网IP信息,所以在网络上搜索和请求运维达人,获得如下两个方法: curl ifconfig.me 在linux系统中输入上述的命令,可以查看到本机连接的公网信 ...

  5. Docker Overlay 应用部署

    Docker Overlay 部署条件 要想使用Docker原生Overlay网络,需要满足以下任意条件: 1.Docker运行在Swarm模式 2.使用键值存储的Docker主机集群 本次部署使用键 ...

  6. openwrt修改hosts

    不同于标准linux主机,openwrt使用dnsmasq来管理dns和dhcp. 修改dnsmasq的配置文件 vi /etc/config/dhcp 在config dnsmasq这组下面添加 l ...

  7. springboot shiro和freemarker集成之权限控制完全参考手册(跳过认证,登录由三方验证,全网首发)

    本文主要考虑单点登录场景,登录由其他系统负责,业务子系统只使用shiro进行菜单和功能权限校验,登录信息通过token从redis取得,这样登录验证和授权就相互解耦了. 用户.角色.权限进行集中式管理 ...

  8. day05数据类型,数字类型,字符串类型,字符串的操作方法,列表类型的操作方法,可变类型与不可变类型

    复习 ''' 流程控制 1.顺序结构.分支结构.循环结构 2.if分支结构 if 条件: 代码块 elif 条件: 代码块 else: 代码块 # 可以被if转换为False:0 | '' | Non ...

  9. SIP协议简单介绍

    sip协议是由IETF提出的IP电话信令协议,主要目的是为了解决ip网络中的信令控制,以及同软交换通信. sip协议类似http协议: 报文结构: start-line message-header ...

  10. 论文笔记:Dynamic Multimodal Instance Segmentation Guided by Natural Language Queries

    Dynamic Multimodal Instance Segmentation Guided by Natural Language Queries 2018-09-18 09:58:50 Pape ...