Cpp_SDay02

news2025/1/12 6:04:59

空山新雨后,天气晚来春

文章目录

  • 前言
  • 一、No File!!!
  • 二、preProcessing
  • 三、static的用意:
  • 四、signed number /unsigned number
  • 五、函数
  • 六、#pragma once
  • 总结


前言

看视频令人犯困,


一、No File!!!

文件只是提供给编译器源代码的一种方式,你负责告诉编译器你输入的是什么类型的一种文件,以及编译器如何处理它。
若创建一个.cpp文件,编译器会把它当做c++文件。
类似的,若创建一个.c或.H文件,编译器会分别当做c语言文件和头文件
这些都是默认的规定,亦可修改,这就是编译器处理它的方式。
可以制作.cherno(.tony)文件,只要告诉编译器,这个文件是一个c++文件,请像c++文件一样编译它。故文件没有意义!

二、preProcessing

编译的第一阶段,预处理。
编译器会遍历所有的预处理语句并进行处理
常用的预处理语句是include、if、ifdef,还有pragma

#include指定了你想要包含的文件,预处理器打开那个文件,阅读他的所有内容,然后把它粘贴到你写的文件中。

如:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
真滴秀。

查看预处理后的cpp文件(.i文件)。
右键项目,
在这里插入图片描述
点击properties
在这里插入图片描述
再将此处的no改成yes,即可以在output路径下的debug里面找到.i文件,用txt打开就能看到预处理后的文件了

示例:
在这里插入图片描述

通常的.obj文件打开来看是一堆二进制代码,
可通过选择properties/(C/C++)/Output Files/Assembler Output/Assembly-Only Listing (/FA)
重新ctrl+F7再看output路径下debug里面会出现.asm文件(里面是汇编语言),相比于.obj的二进制代码,可读性大大提升。

error C2134:(C是compile,编译阶段)

程序入口不必是main(),可以自己修改Entry Point
在这里插入图片描述

三、static的用意:

用于方法的返回值类型之前:意味着此函数只被声明在这个translation unit(翻译单元)中
一般情况下如果cpp不嵌套cpp文件的话,一个tu(translation unit)就是一个cpp

问题情形:
三个文件:一个Log.h、一个Log.cpp、一个Math.cpp
两个cpp文件中都有

#include "Log.h"

根据#include的preprocessing原理易得此处必出错(one or more multiply defined symbols found)
解决方案:1.static 2.inline 3.
1).static:在Log.h文件中函数返回值前加上static,意味着在链接此函数的时候,其只能是内部函数,即两个cpp文件中的此函数只能是内部函数,他们都会有自己版本的此函数,对任何其他的obj文件都不可见。
2).inline:同样的位置换成inline,获取实际的函数体并将函数调用替换为函数体
3).头文件放函数申明,函数体放入translation unit中

四、signed number /unsigned number

signed number(有符号数)四个字节:32位,一位表示符号,剩余31位,故表示范围:±2^31
而如果都是同一符号的话岂不是会平白浪费同样的空间大小,故引入unsigned number(无符号数)表示范围:2^32

无论是用float还是double来定义变量,悬停鼠标看到的类型都是double
在这里插入图片描述
在这里插入图片描述
在5.5后面加上一个f或F,此变量才会成为float型
用sizeof可知一个数据占几个字节(不同的编译器的设定可能不一样)

五、函数

函数的主要目的是为了防止代码重复
函数分为声明和定义(声明通常存储在头文件中,在translation unit或cpp文件中编写定义)

六、#pragma once

#pragma once本质上是一个被发送到编译器或预处理器的预处理指令
pragma once:只包括这个文件一次。pragma once监督这个头文件,阻止我们单个头文件多次被包含,并转换为单个translation unit(这并不妨碍我们将头文件放到程序的多个位置)

在这里插入图片描述
只会执行一次


尖括号只用于编译器包含路径,引号可以做一切。
iostream是一个没有扩展名的文件,以此将C++标准库和C标准库做区分
C标准库通常有.h扩展,但C++没有
meilai?

总结

关键是,要明白,为何而努力
关键是,要时时能想起努力的原因,而心神震荡,气血上涌

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1612169.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3基本功能介绍

文章目录 Vue3组件中的模板结构可以没有根标签div组合式APIRefReactive函数回顾Vue2响应式Vue3实现响应式对比reactive和refSetup注意点计算属性与监听computedWatchWatchEffectVue3生命周期自定义hook函数toRef其他组合APIshallowReactiveshallowRefreadonly和shallowOnlyToRa…

SRIO系列-时钟逻辑与复位逻辑

一、前言 上一篇讲述了SRIO协议的基本概念,传输的HELLO帧格式、事务类型等,本篇说一下SRIO IP核的时钟关系。 基本的IP设置可以参考此篇文章:【高速接口-RapidIO】Xilinx SRIO IP 核详解-CSDN博客 二、时钟关系 PHY可以在两个时钟域上运行…

ubuntu下boa服务器编译运行

一.下载boa源码并解压 官网网站:BOA源码 点击箭头所指的位置即可下载 解压: tar -xvf boa-0.94.13.tar.gz 解压完成得到目录: 二.安装环境所缺依赖,否则编译会报错 sudo apt install bison sudo apt install flex 三.编译 1…

vue快速入门(三十五)组件通信-父传子

注释很详细&#xff0c;直接上代码 上一篇 新增内容 父组件传值子组件接收父组件传来的数据 源码 App.vue <template><div id"app"><!-- :item"item"为将item的值传递给MyTest组件 --><MyTest v-for"item in roles" :key&q…

【Linux开发 第七篇】权限

权限 Linux组权限修改权限 Linux组 在linux中的每个用户必须属于一个组&#xff0c;不能独立于组外 文件/目录 所有者 一般为文件的创建者&#xff0c;谁创建了该文件&#xff0c;就自然的成为了该文件的所有者 这一列即为文件的所有者 修改文件的所有者&#xff1a; chown…

【已解决】win10系统 Docker 提示Docker Engine stopped解决全过程记录

【已解决】win10系统 Docker 提示Docker Engine stopped解决全过程记录 一、检查服务是否开启 找到 【Docker Desktop Service】&#xff0c;然后&#xff0c;启动他&#xff1b; 你也可以直接设置为“自动” 找到服务&#xff0c;右键》属性》启动类型&#xff1a;自动》点击…

经典目标检测YOLOV1模型的训练及验证

1、前期准备 准备好目录结构、数据集和关于YOLOv1的基础认知 1.1 创建目录结构 自己创建项目目录结构&#xff0c;结构目录如下&#xff1a; network CNN Backbone 存放位置 weights 权重存放的位置 test_images 测试用的图…

Java多线程并发八股问题总结

目录 (1).Java中实现线程的方法(2).如何停止一个正在运行的线程(3).notify和notifyAll有什么区别(4).sleep()和wait()有什么区别(5).volatile是什么&#xff1f;可以保证有序性吗&#xff1f;(6).Thread类中的start()和run方法有什么区别&#xff1f;(7).为什么wait、notify、n…

面试经典150题——跳跃游戏 II

面试经典150题 day10 题目来源我的题解方法一 动态规划方法二 贪心 题目来源 力扣每日一题&#xff1b;题序&#xff1a;45 我的题解 方法一 动态规划 动态规划&#xff0c;当j位置可达i位置时&#xff1a;dp[i]Math.min(dp[i],dp[j]1); 时间复杂度&#xff1a;O( n 2 n^2 n…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 4月21日,星期日

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年4月21日 星期日 农历三月十三 1、 商务部等10部门联合发文&#xff1a;进一步支持境外机构投资境内科技型企业。 2、 第二艘国产大型邮轮下坞搭载建造&#xff0c;预计2026年底前交付&#xff0c;中国邮轮开启批量化建造…

Python-VBA函数之旅-hash函数

目录 一、hash函数的定义&#xff1a; 二、hash函数的工作方式&#xff1a; ​三、hash函数的优缺点&#xff1a; 四、hash函数的常见应用场景&#xff1a; 1、hash函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&…

Efficient Subclass Segmentation in Medical Images论文速读

Efficient Subclass Segmentation in Medical Images 摘要 随着医学图像分析的研究兴趣越来越细化&#xff0c;大量注释的成本也在上升。降低成本的一种可行方法是使用粗粒度超类标签进行注释&#xff0c;同时使用有限的细粒度注释作为补充。通过这种方式&#xff0c;细粒度的…

BAPI_BATCH_CHANGE:修改批次的特征值

文章目录 BAPI_BATCH_CHANGE&#xff1a;修改批次的特征值实现步骤定义变量获取对象/类等 获取已维护特性值新特性值更新 注意事项最终效果字段介绍 BAPI_BATCH_CHANGE&#xff1a;修改批次的特征值 现在有一个需求是要修改批次里面的某一个特征值&#xff0c;所以需要使用到B…

带头循环双向链表专题

1. 双向链表的结构 带头链表⾥的头节点&#xff0c;实际为“哨兵位”&#xff0c;哨兵位节点不存储任何有效元素&#xff0c;只是站在这⾥“放哨 的” “哨兵位”存在的意义&#xff1a; 遍历循环链表避免死循环。 2. 双向链表的实现 2.1双向链表结构 typedef int DataTyp…

适合各大资源网投稿html源码

源码介绍 适合各大资源网投稿html源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c;重定向这个界面 效果预览 源码下载 适合各大资源…

mac电脑mysql下载与安装

mysql下载地址 历史下载地址 MySQL :: Download MySQL Community Server (Archived Versions) mac 版下载 mac版本分为 Intel 处理器 和 M系列处理器。 从 8.0.26开始&#xff0c; mysql 支持M系列处理器。 以前的都只有Intel 处理器的。 Intel 处理器选择 x86_64 M 系列处理…

冯喜运:4.21黄金市场失去正常反应?下周黄金原油解析

【黄金消息面解析 】&#xff1a;周五(4月19日)&#xff0c;伊朗媒体似乎淡化了以色列袭击的影响&#xff0c;表明地缘政治风险降低&#xff0c;导致避险资产需求放缓&#xff0c;金价回吐涨幅。本周现货黄金价格上涨超2%。美国黄金期货收盘上涨0.7%&#xff0c;至2413.8美元。…

深入理解Java IO流:字节流

深入理解Java IO流&#xff1a;字节流 引言 在Java中&#xff0c;IO&#xff08;输入/输出&#xff09;操作是程序与外部世界交互的重要方式。 其中&#xff0c;File类是进行文件操作的基础&#xff0c;而字节流和字符流则是数据传输的两种主要方式。 本文将深入探讨这些概念及…

C# 自动填充文字内容到指定图片

目录 需求 开发运行环境 方法设计 实现代码 AddText方法 图片转Base64 调用示例 小结 需求 在我们的一些发布系统项目应用中&#xff0c;会经常发布一些链接图标&#xff0c;该图标基本上以模板背景为主&#xff0c;并填充项目文字内容。解决方式一般会让美工进行制作…

数字化校园在职校教育中的价值和前景

在当今信息化浪潮中&#xff0c;职校教育正以前所未有的速度迈入智慧校园时代。数字化校园以其强大的功能和广泛的适用性&#xff0c;正在深刻地改变职校的教学模式、管理模式以及学生的学习方式&#xff0c;助力职校教育实现高质量、高效率、个性化的转型&#xff0c;如何利用…