首页
学习
活动
专区
圈层
工具
发布

C语言头文件使用总结

在平时工作中看到前人写的一些C头文件,很有感触。自己在写的时候也遇到了很多问题,比如重复引用导致宏或者常量重复定义,不知道该使用双引号还是使用尖括号引用等问题,决定先总结一下。做个笔记,随时复习。...o( ̄▽ ̄)ブ C语言头文件 C语言头文件一般包含了函数声明,宏定义,常量等代码。我们在使用#include引用头文件。可以被多个c文件引用,避免了重复代码,减少了错误。让代码更加规范。...A simple practice in C 或 C++ 程序中,建议把所有的常量、宏、系统全局变量和函数原型写在头文件中,在需要的时候随时引用这些头文件。...头文件引用 系统已经存在了很多头文件,当然,我们也可以自己编写。c文件引用头文件相当于直接复制到文件中,但是这样多个文件要使用这段代码的时候,就产生了很多重复代码,也不方便管理。引用存在两种引用形式。...但是这样并不标准,标准规定,包含标准头文件或系统头文件时应使用尖括号,包含自定义头文件时可使用双引号。

1.9K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何编写自己的C语言头文件

    一些初学C语言的人,不知道头文件(*.h文件)原来还可以自己写的。只知道调用系统库 函数时,要使用#include语句将某些头文件包含进去。其实,头文件跟.C文件一样,是可以自己写的。...头文件是一种文本文件,使用文本编辑器将代码编写好之后,以扩展名.h保存就行了。头文件中一般放一些重复使用的代码,例如函数声明,变量声明,常数定义,宏的定义等等。...当使用#include语句将头文件引用时,相当于将头文件中所有内容,复制到#include处。...常根据它所在的头文件名来命名,例如,如果头文件的文件名叫做stc15w.h,那么可以这样使用: #ifndef _STC15W_H_ #define _STC15W_H_ //代码部分 #...另外,使用#include时,使用引号“”与尖括号的意思是不一样的。使用引号“”时,首先搜索工程文件所在目录,然后再搜索编译器头文件所在目录;而使用尖括号时,刚好是相反的搜索顺序。

    4.2K20

    C++C++11中头文件cmath的使用

    参考链接: C++ lround() 是C标准函数库中的头文件。在C++中一般用。...此头文件中声明了一系列函数来计算常见的数学运算和变换:  std::abs: 计算绝对值,包括整数类型;  std::fabs: 计算绝对值,不包括整数类型;  std::fma(x,y,z):x*y+...round: 舍入取整;  std::lround: 舍入取整, 返回long int;  std::llround: 舍入取整, 返回long long int;  std::nearbyint: 使用当前的舍入模式取整...fegetround());  std::remainder: 两数除法操作的余数(rounded to nearest);  std::remquo: 两数除法操作的余数;  std::rint: 使用当前的舍入模式取整...(fegetround());  std::lrint: 使用当前的舍入模式取整(fegetround()),返回long int;  std::llrint: 使用当前的舍入模式取整(fegetround

    1.1K30

    如何使用 RNN 模型实现文本自动生成 |

    在自然语言处理中,另外一个重要的应用领域,就是文本的自动撰写。关键词、关键短语、自动摘要提取都属于这个领域中的一种应用。不过这些应用,都是由多到少的生成。...这里我们介绍其另外一种应用:由少到多的生成,包括句子的复写,由关键词、主题生成文章或者段落等。 基于关键词的文本自动生成模型 本章第一节就介绍基于关键词生成一段文本的一些处理技术。...如果不满足则进入到c)步进行计算。...这也是本节使用的方式。该方法的基本思想是,从大量收集的语料中统计归纳出固定的模板,系统根据输入句子与模板的匹配情况,决定如何生成不同的表达形式。假设存在如下的模板。...RNN模型实现文本自动生成 6.1.2节介绍了基于短文本输入获得长文本的一些处理技术。这里主要使用的是RNN网络,利用其对序列数据处理能力,来实现文本序列数据的自动填充。

    3.5K21

    C++C++11中头文件cmath的使用

    参考链接: C++ scalbln() 是C标准函数库中的头文件。在C++中一般用。...此头文件中声明了一系列函数来计算常见的数学运算和变换:  std::abs: 计算绝对值,包括整数类型;  std::fabs: 计算绝对值,不包括整数类型;  std::fma(x,y,z):x*y+...round: 舍入取整;  std::lround: 舍入取整, 返回long int;  std::llround: 舍入取整, 返回long long int;  std::nearbyint: 使用当前的舍入模式取整...fegetround());  std::remainder: 两数除法操作的余数(rounded to nearest);  std::remquo: 两数除法操作的余数;  std::rint: 使用当前的舍入模式取整...(fegetround());  std::lrint: 使用当前的舍入模式取整(fegetround()),返回long int;  std::llrint: 使用当前的舍入模式取整(fegetround

    2.9K20

    【CMake】Android Studio 中使用 CMake 编译单个 C++ 源文件 ( 常用的 CMake 命令解析 )

    文章目录 一、Android Studio 中使用 CMake 编译单个 C++ 源文件 二、cmake_minimum_required 命令设置最小 CMake 版本 三、project 命令设置工程名称...详细中文注释 该系列博客的应用场景是 Android Studio 下 NDK 编程 , 使用 CMake 构建 C/C++ 工程 ; 一、Android Studio 中使用 CMake 编译单个 C...++ 源文件 ---- Android Studio 自动生成的 CMakeLists.txt 构建脚本就是默认编译单个 C++ 源码的构建脚本 ; cmake_minimum_required(VERSION...命令设置最小 CMake 版本 ---- 指定 CMake 最低版本 : 使用 cmake_minimum_required 命令 , 指定编译 C/C++ 源码的 CMake 工具的最低版本 , 这里会自动生成...init { System.loadLibrary("native-lib") } } } 七、CMakeLists.txt 详细中文注释 ---- 下面就是自动生成的

    5.1K00

    使用Cmake生成跨平台项目编译解决方案

    1、windows使用cmake_gui生成项目 image.png     如上图,在source code处选择CMakeLists.txt文件所在的路径,然后在binaries中选择项目生成的地址...2、windows使用cmake生成项目     先配置好环境变量,然后打开windows命令行工具,进入到项目目录(CMakeLists.txt所在目录),新建一个build文件夹(因为cmake会产生很多自己的中间文件...生成项目工程文件或者makefile之后,就可以使用对应的编译器来编译项目了。 3、linux使用cmake生成项目     在linux下使用cmake生成项目和和上面的第2小节类似。     ...、库文件)等需求,添加头文件目录功能如下:     include_directories函数用于添加头文件包含目录。     ...invite_code=1yx8jy1oza00c

    5.9K20

    如何使用CMake编译RTT微内核

    《如何移植RTT微内核到树莓派3B》 目前RTT微内核是RTT提供的体验版本。它采用了scons构建。作者也是刚接触scons,不是很了解,在这不过多的说明。...那么来谈谈为什么不使用scons,采用cmake编译。不是因为scons不好,而是之前作者在写关于cmake的文章中,熊大(RTT的创始人)看到,然后在交流中,熊大说可以采用cmake进行编译。...所以我也是冒着尝试的想法,开始了使用cmake去构建微内核。下面几篇文章是关于CMake理论的文章。...《CMake,大型项目采用的构建工具》 《CMake 静态库与动态库构建》 《CMake 教你如何链接共享库》 在构建过程中,由于不是很熟悉整个构建流程,在熊大亲自指导下,让我清晰很多。...flags.make文件的内容如下(包含相关语言的编译选项,宏定义,相关头文件路径):我们通过这个文件查看是否正确: 9.定义两个头文件变量,分别是sdk头文件目录和apps头文件目录: set(microkernel_sdk_inc

    2.5K20

    C++中使用CMake编译管理项目

    原文链接:https://github.com/jacking75/examples_CMake CMake是一个跨平台的Makefile生成工具,可以根据特定的规则生成相应的Makefile文件,并对...有一篇博客介绍CMake的使用,比较通俗易懂,链接地址是:Cmake 详解 CMake的官方下载地址为:https://cmake.org/download/ 官方文档地址为:CMake 3.16...}") endif(CMAKE_COMPILER_IS_GNUCXX) 2、延伸:如何写cmake使其包含c++11特性 (-std=c++11如何写进cmakeList.txt) 使用的g++版本和...jacking75写的简单的cmake使用示例, examples_CMake项目地址是:https://github.com/jacking75/examples_CMake CMake例子 范例介绍...g++) add_definitions("-Wall -std=c++14") ADD_EXECUTABLE(main main.cpp) 07 helloworld-使用外部库(此处为Boost

    4.4K20

    C++ 头文件是使用 .h 还是 .hpp

    问题 我在写 C++ class 的定义部分时,代码都是放在后缀 *.h 文件中,最近在接触 Boost 库的时候发现里边使用的都是 *.hpp 后缀,那么两者在使用上有什么区别?...回答 *.hpp (或 *.hxx, *.hh …)只适用 C++,而 *.h C 和 C++ 都适用。 后缀命名不同的优点: 代码自动格式化。...一些插件可以根据后缀来自动区分哪个是 C 代码,哪个是 C++,来进行对应的格式化。 语言区分。从后缀就可以很容易区分,这个文件下是 C 还是 C++。 文件命名。...C++ 很容易引入 C 库,如果引入了一个 C 库内的头文件 feature.h,而 C++ 不得不对这个文件的代码进行面向对象设计,那么为了保持命名和语义上的统一,将 C++ 文件命名为 feature.hpp

    1K10

    【CMake】使用 SDCC 构建 8051 工程并生成 HEX 文件

    本文将介绍如何使用 SDCC + CMake 构建一个适用于 STC8 系列(8051 架构)MCU 的嵌入式工程,从软件准备到最终生成 .hex 文件,适合初学者逐步上手。 一、前提条件 1....(由 CMake 自动生成) │ └── MySDCCProject.hex # 最终生成的十六进制固件文件 │ ├── cmake/ # 自定义 CMake 脚本目录...整个构建过程高度自动化,便于在不同平台下统一使用命令行进行构建。 1. CMakeLists.txt 这个文件是 CMake 的核心配置脚本,用于定义整个项目的构建逻辑。...Ninja(可选构建器) cmake -B build -G "Ninja" -DSDCC_PATH="..." cmake --build build 六、生成结果 在项目完成构建后,系统会自动生成一个可用于烧录的十六进制固件文件...使用现代工具链(如 CMake)可以大幅提高开发效率,也利于自动化部署与集成。 如果你刚开始学习 8051 嵌入式开发,本项目是一个非常好的起点。

    46510

    【CMake】使用 CMake 将单模块 C 项目构建为库并链接主程序

    本文将以一个简单模块 color 为例,介绍如何使用 CMake: 构建一个结构清晰的 C 项目; 将模块编译为静态库; 配置可执行程序链接库; 自定义库输出路径; 支持跨平台构建(Windows/macOS...└── build/ # 构建输出目录(自动生成) 结构说明 目录/文件 说明 include/ 放置对外公开头文件,便于跨模块引用 src/color/ 独立模块...# 构建静态库 color add_library(color STATIC color.c) # 添加头文件目录(可供外部 target 使用) target_include_directories...(生成 .sln) 6....项目总结与回顾 关键点 内容 使用 add_library() 构建静态/动态库 模块化构建 使用 target_link_libraries() 连接模块 清晰解耦 使用输出变量设置生成目录 可控构建产物结构

    27310

    使用注解自动生成代码

    于是小明发明了一套基于 Annotation Processor 和编译时注解实现的自动生成工厂类代码的方案 首先自定义一个注解类 @CarAnnotation @Target(AnnotationTarget.CLASS...> return Benz() "Audi" -> return Audi() } } } 复制代码 对,和刚刚我们手写的代码一模一样,只不过这一切都是自动生成的...编译器首先会读取 Java/Kotin 源文件,然后查看文件中是否有使用注解,如果有使用,则调用其对应的注释处理器,这个注解处理器(可能会)生成新的带有注解的 Java 源文件,生成的新文件也会参与编译...生成代码 JavaPoet 和 KotlinPoet 是一个生成 Java/Kotlin 代码的库 在上面的例子中,我们需要扫描出所有标注了 @CarAnnotation 注解的类,然后自动生成一个...如何 Debug Annotation Processor 由于注解处理器的运行时机是在编译的时候,如果我们希望在编写代码的时候 Debug 就会有些麻烦,通过日志输出的方式也不够方便,如何实现在注解处理器中断点调试呢

    1.3K00

    CMake 构建指南:如何提高 C-C++ 项目的可维护性

    CMake 构建指南:如何提高 C/C++ 项目的可维护性 如果您是一位C/C++开发人员,那么您一定知道在编写和维护大型项目时所面临的挑战。...CMake就是这样一款工具,它可以自动化C/C++项目的构建过程,使其更加易于管理和维护 使用模块化的CMake文件 将CMakeLists.txt文件划分为多个模块化的文件可以使项目结构更清晰、易于维护...例如编译源代码、链接库、生成文档等。这样可以使项目结构更加清晰,方便维护。另外,使用模块化的CMake文件,还可以使代码更容易重用,因为您可以将代码库打包为独立的模块,供其他项目重用。...使用CMake的代码分析工具 CMake的代码分析工具可以自动化地检查代码中的问题,例如内存泄漏、未定义的行为和未使用的变量。这些工具可以帮助您识别潜在的问题,并改进代码质量。...通过模块化的CMake文件、变量、包管理器、测试框架和代码分析工具,您可以更轻松地管理、维护和改进您的项目,帮助你更好地使用CMake构建C/C++项目!

    82300

    软件测试|如何使用ChatGPT生成自动化测试脚本

    在这方面,借助人工智能技术如ChatGPT,可以显著简化测试脚本的生成过程。本文将介绍如何使用ChatGPT来生成自动化测试脚本,从而加速测试流程并提高效率。...它能够理解人类语言并生成类似人类的回复,可用于各种自然语言处理任务。在测试领域,我们可以将ChatGPT用于生成测试用例、编写测试脚本和生成测试报告,从而自动化测试过程的不同阶段。...使用ChatGPT生成测试脚本的步骤 以下是使用ChatGPT生成自动化测试脚本的一般步骤: 步骤 1:定义测试需求 明确测试需求,例如要测试的功能、场景以及预期的行为。...例如:“生成一个自动化测试脚本,测试登录功能的正确性。” 步骤 3:生成脚本草稿 ChatGPT将根据提示生成脚本草稿。我们需要注意,生成的只是初步的脚本,可以在此基础上进行修改和优化。...通过这种方式,你可以轻松地编写和运行自动化单元测试,同时使用YAML文件来实现测试数据的驱动,从而提高测试的可维护性和扩展性。

    92830
    领券