首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么.cpp被归类为二进制文件?

.cpp被归类为二进制文件是因为.cpp是C++源代码文件的扩展名,而源代码文件是一种文本文件,其中包含了程序员编写的可读性较高的代码。在编译过程中,源代码需要被编译器转换为机器可以执行的二进制代码,这个过程称为编译。编译器将源代码翻译成二进制指令,生成可执行文件或者库文件。

二进制文件是一种包含了机器指令的文件,它的内容是由0和1组成的二进制数据。二进制文件可以直接被计算机硬件识别和执行,而不需要经过编译过程。因此,编译器将源代码文件编译成二进制文件后,可以直接在计算机上运行。

对于.cpp文件来说,编译器会将其编译成二进制文件,通常是目标文件(.obj)或可执行文件(.exe)。目标文件包含了编译后的机器指令,但还没有进行链接,不能直接执行。可执行文件是经过链接的目标文件,可以直接在操作系统上运行。

总结起来,.cpp文件被归类为二进制文件是因为它经过编译器的处理,被转换成了包含机器指令的二进制文件,可以直接在计算机上执行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

阿斯巴甜归类“潜在致癌”引争议

世界卫生组织(WHO)的癌症研究部门将低热量甜味剂阿斯巴甜(Aspartame)分类“潜在致癌” (possibly carcinogenic)。...阿斯巴甜,学名为天门冬酰苯丙氨酸甲酯,化学式C14H18N2O5,广泛应用于药剂加工和食品加工中。 阿斯巴甜用于增加数千种食品和饮料的甜味。...IARC 专题报告项目代理负责人 Mary Schubauer-Berigan 在新闻发布会上表示,新分类“实际上不应视为直接表明摄入阿斯巴甜会导致已知的癌症风险。...其他归类“潜在致癌”的物质包括芦荟提取物、亚洲传统腌菜、一些汽车燃料以及干洗、木工和印刷行业使用的一些化学品。IARC 还将红肉归类“潜在致癌”,加工肉类归类“致癌”。...过去四十年来,这种人工甜味剂曾多次指与癌症风险增加和其他健康问题有关。但FDA和欧洲食品安全局(EFSA)的再评估发现,没有足够证据表明需降低ADI。

16740

String类为什么设计不可变的?

. */ private final char value[]; } String类的值是保存在value数组中的,并且是private final修饰的 private修饰,表明外部的类是访问不到...value数组中的值,保证了value的引用和值都不会发生变化 final关键字的作用有如下几种 final修饰类时,表明这个类不能继承 final修饰方法,表明方法不能重写 final修饰变量,如果是基本数据类型的变量...this : new String(value, beginIndex, subLen); } 为什么String设置不可变的? 字符串常量池 字符串常量池可以节省大量的内存空间。...因为str1、str2指向同一个对象,所以结果true。...这样,str4就指向了堆中创建的这个"abc"字符串对象; 因为str3和str4指向的是不同的字符串对象,结果false。

52210

C++核心准则SF.1:如果你的项目没有正在遵从的其他习惯,代码文件使用.cpp后缀,接口文件使用.h后缀

another convention SF.1:如果你的项目没有正在遵从的其他习惯,代码文件使用.cpp后缀,接口文件使用.h后缀 Reason(原因) It's a longstanding convention...这个习惯反映一个常见的使用模式:头文件更多地和C代码一起分享并且和C++或C代码一起编译,它们通常使用.h后缀。...使用.h所有的头文件命名比较容易,而不是只为试图和C代码一起分享的头文件使用.h后缀。...另一方面,(C++,译者注)实现文件极少和C代码一起分享,通常需要和.c文件区分开来,因此一般最好所有的C++实现代码使用其他后缀(例如.cpp)。...特定的.h和.cpp后缀不是必须的(只是作为默认值推荐),其他的名称也已经广泛使用。例如.hh,.C,和.cxx等。使用这些名称同样可以。

58810

Vscode 搭建 C C++ 开发环境

文章目录 序 Vscode — 编辑器 mingw64 — 编译器 插件支持 .vscode 配置文件 c_cpp_properties.json launch.json tasks.json 环境验证...那么,我想下面这个东西你一定见过 记得当时令我好奇的就是,为什么这个 VC++6.0 里,行号、插件、快捷键……什么都没有呢??...,简单来说,代码是写给人看的,二进制文件是电脑看的,代码是人和机器交流的通道 访问链接,下载编译器 将下载下来的文件解压后,放到 C:\Program Files 文件夹下 添加环境变量 Path...(比如生成的 exe 文件都在源文件下方,非常混乱),我们对此进行优化配置,注意对应的路径请填写你的配置路径 下面给出常用的配置文件(包含 .exe 重定向),可直接保存使用,定向 详细参考 c_cpp_properties.json...<<endl; return 0; } 如果你是用了上方的配置文件,请在根目录下新建 build 文件夹,exe 文件会自动归类到此文件下 如果没有新建 build 文件夹,系统会提示你没有这样的文件

3.4K21

为什么说声明文件 TypeScript 提供了与 JavaScript 代码库集成的途径

声明文件的扩展名通常 .d.ts。声明文件的作用使用声明文件可以为 JavaScript 代码库增加类型信息,从而提供以下好处:1....创建声明文件创建声明文件时,需要了解声明的 JavaScript 代码库的结构和类型信息。可以通过以下几种方式来创建声明文件:1....手动编写如果你对声明的 JavaScript 代码库非常熟悉,可以手动编写相应的声明文件。在一个声明文件中,可以使用 TypeScript 的类型语法来描述变量、函数、类和模块等各种类型。...在 TypeScript 文件的顶部添加这样的指令,告诉编译器该文件依赖于某个声明文件。下面是一个引用声明文件的示例:/// <reference path="....总结声明<em>文件</em><em>为</em> TypeScript 提供了与 JavaScript 代码库集成的途径。通过使用声明<em>文件</em>,可以为 JavaScript 代码库增加类型信息,实现类型检查、智能提示和文档生成等好处。

27420

【头文件】对.h文件的理解

文件的概念 1.1 头文件的由来 在编译器只认识.c(.cpp文件的年代,人们发现很多.c(.cpp文件中的声明语句是相同的,但需要重复地敲入每个文件中,导致维护困难。...1.2 头文件的作用 头文件(通常以.h扩展名)是用来声明变量、函数、宏等的文件,它通常包含在源代码文件中,用于向编译器提供关于程序中各种元素的信息。...1.3 在.h文件中实现函数也不会出错的原因 要解决上述问题,首先必须弄清编译器的工作原理。编译器的最终目的是将程序员编写的源代码转换成机器能够识别运行的二进制机器码。...词法和语法分析(查错) 编译(汇编代码) 转化为汇编码,这种文件称为目标文件。后缀.obj。 链接(二进制机器码) 将汇编代码转换为机器码,生成可执行文件。后缀.exe。...int b); #endif /* ADDITION_H */ 补充: 头文件为什么喜欢写类似下面的内容: #ifndef ADDITION_H #define ADDITION_H //内容。

20810

C++程序编译之谜(一)——多文件编译的奇怪现象

1、奇怪的现象 在C++多文件编译的时候,很多人都会经常碰见这样的一种情况,在一个cpp文件中调用另一个cpp文件的函数,那么可以直接调用吗?我们来做个试验。...,而另外两个cpp文件是要经历编译、汇编生成机器语言的二进制文件,也就是说两个cpp都会各自生成各自的二进制文件。...但是这个还没完,要生成可执行文件,还要将以上cpp文件生成的二进制文件进行链接起来,并且有个文件中还要提供一个main函数入口,因为C++语言的可执行文件的入口是main函数,不提供的话程序无法运行。...add.o -o main 生成的.o文件就是二进制文件,然后将二进制文件进行链接生成可执行文件,也可以用以下这个语句一步到位: gcc add.cpp main.cpp -o main 这样子的话在运行可执行文件...那么我们再回到开头的那个问题,为什么有些人可以正确的输出不会报错,而有些人却会报错呢?

17610

WebAssembly 不完全指北

AOT: Ahead-of-Time compilation 必须是强类型语言,编译在执行之前,编译直接生成CPU能够执行的二进制文件,执行时CPU不需要做任何编译操作,直接执行,性能最佳。...可以看到,asm.js使用了按位或0的操作,来声明x整形。从而确保JIT在执行过程中尽快生成相应的二进制代码,不用再去根据上下文判断变量类型。...Emscripten用于将CPP文件转换成为WASM字节码文件。...这里uint8_t 隐式类型转换为char 使用emcc编译CPP文件至WASM文件: emcc -O3 -s WASM=1 -s EXTRA_EXPORTED_RUNTIME_METHODS='["...这是为什么呢? 我又对2M的长文本进行benchmark对比,结果如下: ? 这一次的提升就比较大了。是什么造成了如此大的差距呢?

2K220

conan入门(十九):封装第三方开源库cpp_redis示例

cpp_redis是一个C++11实现的redis client库,我的项目中需要使用它,但它目前并没有Conan中央仓库收录,所以本文以cpp_redis例介绍将第三方库封装为Conan包的过程。...首先 执行conan new cpp_redis/4.3.1 -b创建一个最简单的conanfile.py文件,在此基础上根据cpp_redis的实际情况修改为如下: conanfile.py 码云地址...# # copy命令执行时src基于build_folder文件夹的相对路径 # ###############...conan create .根据配置文件 (同级文件夹下的conanfile.py) 构建二进制包 conan create 命令行用法参见Conan官方文档《conan create》 执行conan.../4.3.1 -r ${repo} --all # ${repo}私有制品库的名字 –all 指定上传所有内容(配置文件conanfile.py,源码和二进制包),如果不指定些选项,只上传除二进制包之外的所有文件

1.3K30

Java底层-本地接口(JNI)

为什么会有本地接口的概念呢?...,那么只要向用户提供头文件二进制的库即可。...,我们我们就需要编写它的实现,首先定义.cpp文件(可以使用C++开发工具或者纯文本编写也是可以的), cpp文件中首先引入我们生成的头文件,引入头文件之后,我们就对上面头文件的方法 JNIEXPORT...在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。...(2)头文件能加强类型安全检查。如果某个接口实现或使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。

1.2K10

Rust 欧洲之声|Rust 和 Cpp 互操作

“本文 EuroRust 2022 大会上 slint 团队的分享,主题为 Rust and Cpp ,介绍 Slint 中 Rust 和 Cpp 的交互方案和工具 。...这就是为什么你不能混合使用MSVC和GCC生成的库。最小的共同点是C的外部函数接口(FFI),它提供了一个稳定的二进制接口,但它也将接口限制在可以用C编程语言表达的范围内。...但这对于Rust和C++的组合来说是不可能的,所以让我们看看下一个最好的办法:从现有的rust文件或C++头文件自动生成二进制文件。这就是自动绑定生成的意义所在。...一个局部变量obj创建,持有对实例字段obj(类型&c_void)的引用。 cpp!宏处理所有的代码,直到notice函数结尾的括号。...一旦cpp宏生成了所有的代码,它就会通过为其创建的Rust绑定,用对其生成的C++函数的调用来替换自己。 在所有的宏展开后,我们有两个新的函数生成,包括必要的绑定来调用它们。

3.3K21

CMake学习笔记(三)——以笔者的Robosub竞赛

}:此处为生成库文件的源码路径,该变量在前面已经定义。...生成图像客户端目标文件,是基于之前自定义函数部分中的imageprocessing_fun的图像处理函数的,而之前这些函数已经处理文件存储在工程生成路径下的lib路径中,所以指令LINK_DIRECTORIES...用于生成目标二进制可执行文件,有两个参数如下: IPCImageClient:生成目标二进制可执行文件名称 ..../IPCImageClient/ncclient_image_main.cpp:生成该可执行文件所依赖的源码 随后的TARGET_LINK_LIBRARIES指令,以指定的库文件基础,生成目标文件。.../IPCImageClient/ncclient_image_main.cpp)便以源码文件ncclient_image_main.cpp,以及变量LIB_IMAGE中包含的库文件基础,生成了目标可执行文件

1.2K100

C语言中.h和.c文件解析

,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件)   4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码...(生成.exe文件)   编译器在编译时是以C文件单位进行的,也就是说如果你的项目中一个C文件都没有,那么你的项目将无法编译,连接器是以目标文件单位,它将一个或多个目标文件进行函数与变量的重定位,生成最终的可执行文件...)查找与之同名的实现文件(扩展名为.cpp或.c,此例中mylib.c),如果找到该文件,并在其中找到该函数(此例中void test())的实现代码,则继续编译;如果在指定目录找不到实现文件,或者在该文件及后续的各...如果某个接口实现或使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。   头文件用来存放函数原型。   头文件如何来关联源文件?   ...这也正说明了,为什么很多编译器并不care到底这个文件的后缀名是什么----因为#include预处理就是完成了一个"复制并插入代码"的工作。

2.9K40

C语言中.h和.c文件解析(很精彩)

CPU相关的二进制码,生成各个目标文件 (.obj文件) 4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息...(生成.exe文件) 编译器在编译时是以C文件单位进行的,也就是说如果你的项目中一个C文件都没有,那么你的项目将无法编译,连接器是以目标文件单位,它将一个或多个目标文件进行函数与变量的重定位,生成最终的可执行文件...)查找与之同名的实现文件(扩展名为.cpp或.c,此例中mylib.c),如果找到该文件,并在其中找到该函数(此例中void test())的实现代码,则继续编译;如果在指定目录找不到实现文件,或者在该文件及后续的各...如果某个接口实现或使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。   头文件用来存放函数原型。   头文件如何来关联源文件?   ...这也正说明了,为什么很多编译器并不care到底这个文件的后缀名是什么----因为#include预处理就是完成了一个"复制并插入代码"的工作。

1.6K20

C++:静态成员与友元

静态成员 静态成员包含静态数据成员和静态成员函数,那么为什么会存在静态成员?...stuNum;//学生总人数 string name; //.. }; 静态数据成员 上面的程序片段定义了静态数据成员 stuNum,它将用于记录学生总人数,它将如何合理使用呢...stuNum--; } 然后在 C++ 工程文件中包含 student.cpp 和 main()函数所在 cpp 文件即可,这是静态数据成员的标准使用方法。...} private: static int stuNum; string name; }; 友元 为什么需要友元?...在我之前的 OA 项目中,就遇到了该问题: 有时候一个普通的函数也需要直接访问一个类中的 private 或者 protected 数据成员,如果没有友元,那么我们只能将需要访问的数据成员归类于 public

67510
领券