c++ 头文件

简介: 可以将程序分为二部分: 头文件:包含结构声明和使用这些结构的函数的原型 源代码文件: 包含与结构有关的函数的代码   不要将函数的定义或变量的声明放在头文件里, 一般头文件可以包含以下内容 >函数原型 >使用#define或const定义的符号常量 >结构声明 >类声明 >模板声明 >内联函数 在包含头文件时我们使用 #include "head.

可以将程序分为二部分:

头文件:包含结构声明和使用这些结构的函数的原型

源代码文件: 包含与结构有关的函数的代码

 

不要将函数的定义或变量的声明放在头文件里,

一般头文件可以包含以下内容

>函数原型

>使用#define或const定义的符号常量

>结构声明

>类声明

>模板声明

>内联函数

在包含头文件时我们使用 #include "head.h"而不是#include <head.h>

如果使用<>  c++编译器将在存储标准头文件的主机系统的文件系统中查找;

如果使用""   编译器会首先查找当前的工作目录或源代码目录,如果没有找到头文件,再去标准位置查找

注意:在IDE中,不要将头文件加入到项目列表中,也不要在源代码文件中使用#include 来包含其它源代码文件

#ifndef COORDIN_H
#define COORDIN_H

struct polar
{
    double distance;  //distance from origin
    double angle;      //direction form origin
};

struct rect
{
    double x;    //horizontal distance form origin
    double y;    //vertical distance from origin
};

polar rect_to_polar(rect xypos);
void show_polar(polar dapos);

#endif

在同一个文件中只能将一个头文件包含一次,但有可能会因为错误操作包含多次,有一种标准的c/c++技术可以避免

多次包含一个头文件。它是基于预处理编译指令#ifndef(if not defined)的。上边的代码意味着仅当以前没有

使用预处理编译器指令#define定义名称COORDIN_H时,才处理#ifndef和#endif之间的语句

源代码文件

#include<iostream>
#include<cmath>
#include "coordin.h"

using namespace std;

polar rect_to_polar(rect xypos)
{
    polar answer;
    answer.distance=sqrt(xypos.x*xypos.x+xypos.y*xypos.y);
    answer.angle=atan2(xypos.y,xypos.x);
    return answer;
}
void show_polar(polar dapos)
{
    cout<<dapos.angle<<"   "<<dapos.distance<<endl;
}

调用

#include<iostream>
#include "coordin.h"
using namespace std;
int main()
{
    rect replace;
    polar pplace;
    cout<<"Enter the x and y values:\n";
    while(cin>>replace.x>>replace.y)
    {
        pplace=rect_to_polar(replace);
        show_polar(pplace);
    }    
    cin.get();
}

 

 

目录
相关文章
|
存储 NoSQL 关系型数据库
【云原生】3.3 Kubernetes 中间件部署实战
一个项目总会有数据吧?数据存那里呢?在前面我们讲过,很明显直接存在数据卷里面(PVC),例如 MySQL的数据。比如 MySQL有自己的配置文件、Redis 有自己的配置文件、微服务也有自己的配置文件,将它们挂在到配置集里面(ConfigMap),服务采用的是 ClusterlP 与 NodePort。......
2427 101
【云原生】3.3 Kubernetes 中间件部署实战
|
JavaScript 前端开发 Python
PIP常用命令-No module named ‘lxml‘
PIP常用命令-No module named ‘lxml‘
340 0
|
8月前
|
存储 缓存 监控
深度剖析阿里巴巴平台商品详情接口:技术、应用与代码实战
阿里巴巴商品详情接口基于RESTful架构,使用HTTP协议通信,支持GET和POST请求方式。开发者需通过App Key和App Secret进行签名认证,确保接口安全调用。核心端点如`https://api.1688.com/router/rest?method=alibaba.item.get`可用于获取商品基本信息,常见参数包括`fields`(指定返回字段)和`num_iid`(商品ID)。接口响应为JSON格式,包含商品标题、价格、库存、描述、图片链接、供应商信息等。开发者可结合实际需求进行数据提取与处理。
|
11月前
|
存储 人工智能 关系型数据库
《深度揭秘:借助MySQL实现AI模型训练全程追溯》
在AI模型训练中,记录训练过程与参数至关重要,有助于优化模型、促进团队协作及问题排查。MySQL凭借强大的数据管理能力,可高效存储和处理结构化数据,确保一致性与完整性。通过设计合理的表结构(如模型信息表、训练记录表等),结合规范的记录流程,能有效支持大规模AI项目。然而,也需应对数据量增长、一致性维护和数据安全等挑战,以充分发挥MySQL的优势,推动AI技术发展。
376 29
|
11月前
|
机器学习/深度学习 人工智能 算法
《深度洞察:AI助力MySQL性能困局突围》
在数据驱动的业务体系中,MySQL作为核心关系型数据库,常因数据量增长、应用复杂度提升而面临性能下降问题。传统人工排查效率低且难以应对复杂情况,而AI技术凭借强大的数据分析与模式识别能力,可高效定位性能瓶颈并提出优化方案。通过收集与分析MySQL性能指标、查询日志等数据,AI能精准发现异常根源,如查询优化问题或资源配置不足,并动态调整优化策略。这不仅提升了MySQL性能与稳定性,还为业务发展提供了坚实支撑,展现了AI在数据库管理领域的巨大潜力。
367 15
|
11月前
|
存储 Java
【源码】【Java并发】【ThreadLocal】适合中学者体质的ThreadLocal源码阅读
前言 下面,跟上主播的节奏,马上开始ThreadLocal源码的阅读( ̄▽ ̄)" 内部结构 如下图所示,我们可以知道,每个线程,都有自己的threadLocals字段,指向ThreadLocalMap
594 81
【源码】【Java并发】【ThreadLocal】适合中学者体质的ThreadLocal源码阅读
|
10月前
|
分布式计算 Hadoop Java
CentOS中构建高可用Hadoop 3集群
这个过程像是在一个未知的森林中探索。但当你抵达终点,看到那个熟悉的Hadoop管理界面时,所有的艰辛都会化为乌有。仔细观察,尽全力,这就是构建高可用Hadoop 3集群的挑战之旅。
359 21
|
11月前
|
Java 测试技术 数据库
使用benchmarksql测试数据库处理能力
传统的OLTP业务,应用系统使用 java 开发,并且不建议使用存储过程,使用 benchmarksql 压测数据库最公平,既可以测试数据库性能,也可以测试JDBC驱动
753 88
|
11月前
|
程序员 测试技术 开发工具
怎么开发Python第三方库?手把手教你参与开源项目!
大家好,我是程序员晚枫。本文将分享如何开发Python第三方库,并以我维护的开源项目 **popdf** 为例,指导参与开源贡献。Popdf是一个PDF操作库,支持PDF转Word、转图片、合并与加密等功能。文章涵盖从fork项目、本地开发、单元测试到提交PR的全流程,适合想了解开源贡献的开发者。欢迎访问[popdf](https://gitcode.com/python4office/popdf),一起交流学习!
343 21
怎么开发Python第三方库?手把手教你参与开源项目!
|
11月前
|
人工智能 关系型数据库 MySQL
《深度探秘:解锁开源社区中MySQL与AI集成的资源宝库》
在数据管理与AI融合的前沿领域,MySQL与AI的集成成为开发者和数据科学家关注的焦点。开源社区作为技术爱好者的智慧殿堂,提供了丰富的支持与资源。本文从开源社区的活力生态出发,探讨如何通过专业论坛、代码托管平台及技术博客精准获取资源,并通过深度参与社区互动、筛选整合优质内容,构建个人知识体系。掌握这些方法,不仅能提升技术能力,还能推动MySQL与AI集成在实际项目中的创新应用,为数据驱动的未来贡献力量。
291 26

热门文章

最新文章