首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏homura的博客

    Rc-lang开发周记3 生成C++代码

    以及本周的内容主要在于生成C++的代码,更多的是Ruby的元编程技巧。 +解析 最主要的问题是要如何让C++解析这边生成的东西。 在好久之前了解rv的时候我甚至一度想开一个坑,用一个dsl来描述一个isa,之后生成对应的C++的读写代码。最后也是咕咕咕了,后续有时间可以做一下,还是挺有意思的。 当时做的时候没想到,现在一想其实也可以直接用Struct来描述,采用和我上面一致的方案 ISA.define :LOAD do field :rd, 5 field :funct3, 3 field :rs1, 5 field :imm, 12endISA::define :STORE do field :offset_4_0, 5 field :width, 3 field :base,

    44820编辑于 2023-04-07
  • 来自专栏码客

    C++开发启程

    开发环境 开发工具 CLion(推荐): http://www.jetbrains.com/clion/ 需要安装下面的编译器 Visual Studio: https://visualstudio.microsoft.com /zh-hans/downloads/ 安装文件太大了 编译器 C++编译器:https://sourceforge.net/projects/mingw-w64/files/ 推荐下载:x86_64- posix-seh GNU 的 C/C++ 编译器 Cygwin 提供了一整套 可移植操作系统接口 (Portable Operating System Interface,缩写:POSIX)层。 开发的程序需要把依赖的 DLL 一起发布。 MinGW 是基于 Cygmin 开发的。重视性能优于兼容性,不需要提供兼容层,因为是直接调用 Windows API。 一般开发用 MinGW (Minimalist GNU for Windows)就够了,但是 MinGW 只能在 windows 上编译32位程序,而且很久不更新,不支持较新的 Windows API。

    1.4K10发布于 2020-05-09
  • 来自专栏ljw

    C++游戏开发

    C++游戏开发概述 C++ 是游戏开发中的主要编程语言之一,因其性能、控制和广泛的生态系统而受到开发者的青睐。随着游戏行业的迅速发展,C++ 被用来构建许多成功的游戏和游戏引擎。 C++在游戏开发中的优势 1.1 性能 C++ 是一种高性能语言,允许开发者对系统资源进行精细控制,这在需要高帧率和低延迟的实时游戏中尤为重要。C++ 的编译特性使得代码执行速度快于许多解释型语言。 通过定义事件和回调,开发者能够有效管理游戏中的交互。 2.3 面向对象编程(OOP) OOP 是游戏开发中常用的编程范式。通过定义类、继承和多态,开发者能够创建可重用和可扩展的游戏对象。 3. C++ 开发者可以使用各种音频库来处理音频管理: OpenAL:一个开源音频库,适用于 3D 音频。 FMOD:强大的商业音频引擎,支持多种平台和复杂音频处理。 掌握 C++ 和相关技术,可以帮助开发者创建丰富的游戏体验。随着技术的不断发展,C++ 将继续在游戏开发领域发挥重要作用。

    93110编辑于 2025-05-31
  • 来自专栏包子的书架

    C++ 模板开发

    C++模板开发分为两类: 模板函数开发 模板类开发 模板函数语法: template <class type> ret-type func-name(parameter list) { Exception: " << ex.what() <<endl; return -1; } } 上面的模板函数和模板类的例子,都是定义和声明在同一个文件中,但是如果按照传统的C+ +类开发,类的声明放H头文件,定义方法CPP源文件,这个时候编译会报错,提示成员函数未定义。 当然,这个问题,也是有解决方案的,可以参考C++ 模板类的声明与实现分离问题 参考文献http://blog.csdn.net/u012750314/article/details/52770847 这是模板分离开发的实现可以借鉴: https://www.jianshu.com/p/3a7a41d46645

    1.2K31发布于 2020-06-16
  • 来自专栏学习成长指南

    C++学习~~string(3)

    因为这个函数得到的是第一个.后面的所有东西,这个时候我们想要得到的是zip就是最后的一个.后面的字符,这个时候我们应该使用的就是rfind函数,这个函数就可以得到这个字符串里面的最后一个.后面的后缀; (3) ,到这个com位置结束,我们的函数substr的第二个参数是子字符串的长度,就是i2-(i1+3); 对于这个最后的内容,我们从i2+1这个位置开始找就可以了,不用传递这个第二个参数,他这样就会自动找到这个字符串的末尾才会停止 所以我们这里使用的就是rfind函数,如果这个字符串有空格,我们就要使用这个size函数减去i+1;这样求的就是最后的一个单词的长度(因为这个i求的是空格的小标,i+1才是这个最后一个单词的起始位置的下标); 3. 函数只写两个参数就代表的是获取我们输入的所有,加上第三个参数,就获取到这个参数的位置截止;下面做一个简单的对比 (1) 使用cin无法获取空格后面的内容: (2)使用这个getline获取全部内容: (3) 添加第三个参数就可以到指定位置停止获取:我们这里是添加了#,这个时候读取时到#就会截止; (3)字符串的相加 我们下面提供两种思路解决这个问题: 我们首先说一下这个整体的思路,就是让这个指针从后向前,直到这两个字符串都遍历完成才停止

    15800编辑于 2025-02-24
  • 来自专栏Android点滴分享

    c++模版笔记(3)

    本篇介绍 本篇继续C++的模版介绍 std::invoke 以一种统一形式调用函数和传递参数: void foreach (Iter current, Iter end, Callable op, Args a:b; } 模版模版参数匹配 对于模版模版参数,c++ 17之后的版本也支持用一个参数包支持多个参数,不需要匹配每个参数。

    44910编辑于 2022-10-25
  • 来自专栏全栈程序员必看

    C++学习笔记3

    C++ 中。函数能够重载。 仅仅要函数中形參的个数或类型不同,则同一个函数名可用于定义不同的函数。编译器将依据函数调用时的实參确定调用哪一个函数。 C++ 提供了两种特殊的函数:内联函数和成员函数。将函数指定为内联是建议编译器在调用点直接把函数代码展开。 内联函数避免了调用函数的代价。成员函数则是身为类成员的函数。 1. v2 is const v3 = incr(0); // error: literals arenot lvalues v3 = incr(v1 + v2) v3 is a non const objecttype int } 6. 指向重载函数的指针 C++ 语言同意使用函数指针指向重载的函数: extern void ff(vector<double>); extern void ff(unsigned int); /

    44110编辑于 2022-07-07
  • 来自专栏c++与qt学习

    c++文件操作3

    参数解释:内存指针buffer指向内存中一段存储空间,len是读写的字数 二进制文件写文件步骤: 1.包含头文件:#include< fstream > 2.创建流对象:ofstream ofs 3.

    49920发布于 2021-02-22
  • 来自专栏Java

    3 的幂(C++)

    3 的幂 给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true;否则,返回 false 。 整数 n是 3的幂次方需满足:存在整数x使得n == 3x 示例 1: 输入:n = 27 输出:true 示例 2: 输入:n = 0 输出:false 示例 3: 输入:n = 9 输出:true 示例 4: 输入:n = 45 输出:false 提示: -231 <= n <= 231 - 1 我的思路: 我们不断地将 n 除以 3,直到 n=1。 如果此过程中 n 无法被 3 整除,就说明 n 不是 3 的幂。 n /= 3; return n == 1; } };

    15600编辑于 2025-01-21
  • 来自专栏软件研发

    C++游戏开发:实现2D3D游戏逻辑和渲染

    C++游戏开发:实现2D/3D游戏逻辑和渲染在游戏开发中,C++是一种广泛使用的高效编程语言。它提供了强大的功能和灵活性,适用于实现2D和3D游戏的逻辑和渲染。 以下是使用C++实现游戏逻辑的一般步骤:创建游戏窗口和事件循环:使用游戏开发框架(如SDL、SFML或OpenGL)创建游戏窗口,并设置一个主循环来监听用户输入和更新游戏状态。 renderGame(); // ...}通过上述步骤,你可以使用C++实现游戏渲染以呈现2D或3D图形。结论本篇博客介绍了使用C++实现2D/3D游戏逻辑和渲染的基本步骤。 了解这些基本原理和技巧对于从事游戏开发工作或学习游戏编程非常重要。希望这篇文章对你有所帮助,并激发你在游戏开发领域的创造力和热情!我们以一个简单的2D游戏为例,实现一个小球在窗口中的移动和碰撞检测。 这个简单的例子展示了使用C++实现2D游戏逻辑和渲染的基本思路和方法,你可以根据具体的需求和游戏规则来扩展和改进这个代码。当涉及到C++游戏开发,应用场景广泛且多样化。

    2.2K10编辑于 2023-12-02
  • 来自专栏Rice嵌入式

    C++ 文件、流《Rice C++ 学习开发

    前面利用了三篇文章讲解了面向过程过程到面向对象语言的转变,以及对C++面向对象的内容进行了讲解,接下来将对C++的高级编程内容进行讲解。 在C++中,文件的读写也是通过类似标准输入、输出流一样。 C++的文件操作: 在标准输入和输出方法中,我们是使用了iostream标准库,而对于文件读取流和文件写入流,我们将使用标准库fstream,C++定义了三个新的数据类型。 关闭文件: C++中,当我们终止程序时,它会自动关闭所有流,释放所有分配的内存,以及关闭所有打开的文件。不过要养成良好的编程习惯,在终止程序时,关闭所有打开的文件。 函数原型: void close(); 文件写入: C++的文件写入使用流插入运算符“<<”向文件写入信息。 文件读取: C++的文件读取使用流提取运算符“>>”向文件读取信息。

    91820编辑于 2022-05-09
  • 来自专栏Rice嵌入式

    C++ 异常处理《Rice C++ 学习开发

    C++异常提供了三个关键字: throw:当程序出现异常时,将异常抛出。 catch:捕获程序的异常。 try:try 块中的代码标识将被激活的特定异常,通常跟着一个或多个catch 块。 保护代码 }catch( ExceptionName e1 ) { // catch 块 }catch( ExceptionName eN ) { // catch 块 } 异常抛出: C+ +提供了一系列标准的异常,需包含头文件#include <exception> 异常描述std::exception该异常是所有标准 C++ 异常的父类。 std::bad_exception这在处理 C++ 程序中无法预期的异常时非常有用。std::bad_typeid该异常可以通过 typeid 抛出。 C++允许通过继承和重载 exception 类来定义自己的异常处理。

    89720编辑于 2022-05-09
  • 来自专栏学习成长指南

    C++类和对象(3

    我们可以调用不同的函数,如果只是进行的读取,我们可以调用上面的函数,这样的话我们是没有办法对数据进行修改的;如果想要对数据进行修改,我们就可以调用下面的函数,这样面对不同的情况,调用不同的函数,效率更高; 3. 但是实际上我们使用的时候却不会报错,这个就是因为我们的运算符有一个默认的函数,我们可以直接获取某个对象的地址,不需要进行运算符的重载; 4.流插入&&流提取的运算符重载 (1)流插入运算符和流提取运算符是C+ 里面引入的两个秘密武器,他解决了c语言里面的printf和scanf的局限性问题; (2)如果我们想要打印cout<<d1这个对象,显然是无法实现的,但是我们可以对流插入和流提取这两个运算符进行重载; (3

    7900编辑于 2025-02-24
  • C++之类与对象(3

    3. C++规定自定义类型对象进行拷贝行为必须调用拷贝构造,所以这里自定义类型传值传参和传值返回都会调用拷贝构造完成。 4. 若未显式定义拷贝构造,编译器会生成自动生成拷贝构造函数。 C++规定类类型对象使用运算符时,必须转换成调用对应运算符重载,若没有对应的运算符重载,则会编译报错。 C++规定,后置++重载时,增加一个int形参,跟前置++构成函数重载,⽅便区分。 3. ; // 比较 d1 和 d3 if (d1 == d3) { cout << "d1 is equal to d3" << endl; } else

    17910编辑于 2025-12-19
  • 来自专栏C++

    C++——类和对象(3

    如果你没有给缺省值,对于没 有显示在初始化列表初始化的内置类型成员是否初始化取决于编译器,C++并没有规定。 类型转换C++支持内置类型隐式类型转换为类类型对象,需要有相关内置类型为参数的构造函数。构造函数前面加explicit就不再支持隐式类型转换。类类型的对象之间也可以隐式转换,需要相应的构造函数支持。 // 中间产生的临时变量具有常性,要加const//int* pi = &i;//float f = (float)pi; //errreturn 0;}(2)内置类型转换为类类型对象:// <2> C+ 3);st1.Push(a3);st1.Push(3); // 3能够通过构造函数转换为一个A的对象(编译器自动生成),这个对象是临时对象,然后这个对象会传给形参string s1("xxxxx");st1 如何优化C++标准并没有严格规定,各个编译器会根据情况自行处理。当前主流的相对新⼀点的编译器对于连续⼀个表达式步骤中的连续拷贝会进行合并优化,有些更新更"激进"的编译器还会进行跨行跨表达式的合并优化。

    21310编辑于 2025-10-21
  • 来自专栏MasiMaro 的技术博文

    C++ 调用Python3

    Python 提供了 C++ 库,使得开发者能很方便地从 C++ 程序中调用 Python 模块。 +数据类型与Python对象的相互转化 Python与C++结合的一个关键的内容就是C++与Python数据类型的相互转化,针对这个问题Python提供了一系列的函数。 这里需要注意一个问题就是Python3废除了在2中的普通的字符串,它将所有字符串都当做Unicode了,所以在调用3的时候需要将所有字符串转化为Unicode的形式而不是像之前那样转化为String。 // 2个参数 PyObject* arg1 = PyInt_FromLong(4); // 参数一设为4 PyObject* arg2 = PyInt_FromLong(3) ,可以直接使用 PyObject* args = Py_BuildValue(4, 3); 这种方式来创建元组 解析元组 Python 函数返回的是元组,在C++中需要进行对应的解析,我们可以使用 PyTuple_GetItem

    2.6K50发布于 2018-08-31
  • 来自专栏C/C++、数据结构、算法

    C++:类与对象(3

    C++:类与对象(2)-CSDN博客 去重载operator<<,然后发现没办法将operator<<重载成成员函数。因为cout的输出流对象和隐含的this指针在抢占第一个参数的位置。 3、注意内部类可以直接访问外部类中的static成员,不需要外部类的对象/类名。 3、对象传值返回优化 在func3中创建了一个变量,在拷贝一个临时变量返回,这个过程优化成直接构造。 传返回值拷贝构造了一次,又拷贝给aa1拷贝构造了一次,最后都被优化成直接构造。 经过1之后,在人的头脑中已经对洗衣机有了一个清醒的认识,只不过此时计算机还不清楚,想要让计算机识别人想象中的洗衣机,就需要人通过某种面相对象的语言(比如:C++、Java、Python等)将洗衣机用类来进行描述 ,并输入到计算机中 3.

    28710编辑于 2024-02-28
  • C++ 类与对象(3

    这一篇我们来给C++类与对象收尾,这一篇还会补充类的默认成员函数没讲的部分,开始吧 1.类的默认成员函数::取地址运算符重载 1.1const成员函数 C++将const修饰的成员函数称为 const成员函数 3.类型转换 C++支持内置类型隐式类型转换为 类 类型对象,需要相关内置类型为参数的构造函数 比如 A aa = 5 ;  则需要A类有一个参数为 int 的带参构造  构造函数前面加 explicit A a3 ,最后直接用a3 作为参数插入。 ; A a2 = {2,3}; const A& ref3 = {2,3}; st1.Push({2,3}); 如图,双参数的写法就是这样,如果需要走隐式类型转换,那就用大括号括起来 综上,析构顺序是 BADC 所以答案选择 B C++类与对象(3)到此结束。下一篇我将结束类与对象的知识,请大家多多支持,有误请指出,谢谢大家!

    19410编辑于 2025-12-20
  • 来自专栏技术分享

    C++】— 类和对象(3

    类型转换 c++支持内置类型隐式类型转换为类类型对象,需要有内置类型为参数的构造函数。 构造函数前面+explicit就不再支持隐式类型转换。 int _b = 0; }; int main() { A aa1 = 1; //1构造一个A的临时对象,在用这个对象拷贝构造aa1 //编译器将连续构造+拷贝构造优化为直接构造 A aa3 = { 2,2 }; B b = aa3; // aa3隐式类型转换为b return 0; } 3. static成员 static修饰的成员变量称为静态成员变量,静态成员变量一定要在类外面进行初始化 int _a2 = 2; }; class B { //友元声明 friend void func(const A& aa, const B& bb); private: int _b1 = 3;

    23610编辑于 2024-10-21
  • 来自专栏学习成长指南

    C++~~string模拟实现(3

    ,这两者仅仅在代码的简洁度上面有所区别,其他的大体相同; (2)现代的写法里面,我们使用的初始化列表进行初始化,调用swap函数进行这个交换同样也是可以达到这个拷贝构造的目的,实际上这个temp就是s3的拷贝 ,想要达到的效果就是s2和s3一样,这个swap实际上就是s2这个对象调用的; (3)赋值函数的现代写法就更加简洁了,因为我们在进行赋值的时候,主要考虑的问题就是原来空间的释放问题,我们把原来的空间数据拷贝给 这样的话就相当于延迟拷贝,需要时候我们再去执行深拷贝; 4.string类的几个构造函数总结 4.1基本用法 4.2两个赋值方式 下面的两个方式都是等效的,都是相当于对于这个字符串进行初始化赋值操作; 4.3拷贝构造 C+ hello world字符串,3,3就是表示的从第三个下标位置开始,读取三个字符的内容; s9是只给出来了第二个参数,我们这个时候就会直接读取到斜杠0才结束,并不会向上面的一样读取后面的随机内容; 但是如果我们把这个 s3换为正式的字符串内容,我们感觉这个好像并没有影响,实际上这个输出的结果还是有一些差别的; 对于这个s11的内容,会按照上面的4.4里面的构造函数打印输出的,因为这个参数和4.4里面的构造函数更加接近

    11300编辑于 2025-02-24
领券