【C 语言】文件操作 ( 配置文件读写 | 框架搭建 | 头文件定义 | 头文件导入限制 | 兼容 C++ 语言 | 函数形参输入输出属性注释)

简介: 【C 语言】文件操作 ( 配置文件读写 | 框架搭建 | 头文件定义 | 头文件导入限制 | 兼容 C++ 语言 | 函数形参输入输出属性注释)

文章目录

一、头文件定义

1、头文件导入限制

2、兼容 C++ 语言

3、函数形参输入输出属性

4、代码示例





一、头文件定义



1、头文件导入限制


头文件导入限制 : 防止头文件多次导入 , 将头文件的内容 , 使用下面的宏定义包裹 ;


// 防止多次导入
#ifndef __CFG_H__
#define __CFG_H__
#endif // __CFG_H__



2、兼容 C++ 语言


兼容 C++ 语言 : 为了使该头文件既可以在 C 语言中使用 , 又可以在 C++ 中使用 , 使用如下宏定义 包裹 头文件内容 ;


// 兼容 C++
#ifdef  __cplusplus
extern "C" {
#endif // __cplusplus
#ifdef  __cplusplus
}
#endif // __cplusplus



3、函数形参输入输出属性


如果函数形参 作为输入 , 可以在形参名很后面添加 /*in*/ 注释 ;


如果函数形参 作为输出 , 可以在形参名很后面添加 /*out*/ 注释 ;


如果函数形参 即作为输入 , 又作为输出 , 可以在形参名很后面添加 /*in out*/ 注释 ;


这个注释没有实际的意义 , 本质是普通注释 , 但是可以增加代码的可读性 ;


// 获取配置项
int read_config_file(char *filename /*in*/, char *key /*in*/, char * value/*in out*/, int * value_len /*out*/);



4、代码示例


头文件代码示例 :


// 防止多次导入
#ifndef __CFG_H__
#define __CFG_H__
// 兼容 C++
#ifdef  __cplusplus
extern "C" {
#endif // __cplusplus
// 定义接口时 , 如果函数形参用作输入数据时 , 可以在形参名很后面添加 /*in*/ 注释
//
// 获取配置项
int read_config_file(char *filename /*in*/, char *key /*in*/, char * value/*in out*/, int * value_len /*out*/);
// 写出 / 更新配置项
int write_or_update_config_file(char *filename /*in*/, char *key /*in*/, char *value/*in*/, int value_len /*in*/);
#ifdef  __cplusplus
}
#endif // __cplusplus
#endif // __CFG_H__



目录
打赏
0
0
0
0
39
分享
相关文章
|
3天前
|
【c++】继承(继承的定义格式、赋值兼容转换、多继承、派生类默认成员函数规则、继承与友元、继承与静态成员)
本文深入探讨了C++中的继承机制,作为面向对象编程(OOP)的核心特性之一。继承通过允许派生类扩展基类的属性和方法,极大促进了代码复用,增强了代码的可维护性和可扩展性。文章详细介绍了继承的基本概念、定义格式、继承方式(public、protected、private)、赋值兼容转换、作用域问题、默认成员函数规则、继承与友元、静态成员、多继承及菱形继承问题,并对比了继承与组合的优缺点。最后总结指出,虽然继承提高了代码灵活性和复用率,但也带来了耦合度高的问题,建议在“has-a”和“is-a”关系同时存在时优先使用组合。
26 6
【C语言程序设计——文件】文件操作(头歌实践教学平台习题)【合集】
本文介绍了C语言中的文件操作,分为两个关卡。第1关任务是将键盘输入的字符(以#结束)存入`file1.txt`并显示输出;第2关任务是从键盘输入若干行文本(每行不超过80个字符,用-1作为结束标志),写入`file2.txt`后再读取并显示。文中详细讲解了文件的打开、读取(使用`fgetc()`和`fgets()`)、写入(使用`fputc()`和`fputs()`)及关闭操作,并提供了示例代码和测试说明。
74 5
【C语言】深入解析C语言结构体:定义、声明与高级应用实践
通过根据需求合理选择结构体定义和声明的放置位置,并灵活结合动态内存分配、内存优化和数据结构设计,可以显著提高代码的可维护性和运行效率。在实际开发中,建议遵循以下原则: - **模块化设计**:尽可能封装实现细节,减少模块间的耦合。 - **内存管理**:明确动态分配与释放的责任,防止资源泄漏。 - **优化顺序**:合理排列结构体成员以减少内存占用。
225 14
【C语言】文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 `<stdio.h>` 头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
81 9
|
3月前
|
【C语言】全局搜索变量却找不到定义?原来是因为宏!
使用条件编译和 `extern` 来管理全局变量的定义和声明是一种有效的技术,但应谨慎使用。在可能的情况下,应该优先考虑使用局部变量、函数参数和返回值、静态变量或者更高级的封装技术(如结构体和类)来减少全局变量的使用。
57 5
|
3月前
|
【C语言】宏定义在 a.c 中定义,如何在 b.c 中使用?
通过将宏定义放在头文件 `macros.h` 中,并在多个源文件中包含该头文件,我们能够在多个文件中共享宏定义。这种方法不仅提高了代码的重用性和一致性,还简化了维护和管理工作。本文通过具体示例展示了如何定义和使用宏定义,帮助读者更好地理解和应用宏定义的机制。
133 2
C 语言中的文件操作:数据持久化的关键桥梁
C语言中的文件操作是实现数据持久化的重要手段,通过 fopen、fclose、fread、fwrite 等函数,可以实现对文件的创建、读写和关闭,构建程序与外部数据存储之间的桥梁。
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
【C++篇】深度解析类与对象(中)
在上一篇博客中,我们学习了C++类与对象的基础内容。这一次,我们将深入探讨C++类的关键特性,包括构造函数、析构函数、拷贝构造函数、赋值运算符重载、以及取地址运算符的重载。这些内容是理解面向对象编程的关键,也帮助我们更好地掌握C++内存管理的细节和编码的高级技巧。
【C++篇】深度解析类与对象(上)
在C++中,类和对象是面向对象编程的基础组成部分。通过类,程序员可以对现实世界的实体进行模拟和抽象。类的基本概念包括成员变量、成员函数、访问控制等。本篇博客将介绍C++类与对象的基础知识,为后续学习打下良好的基础。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等