使用XStudio CDE & MINGW 开发C/C++

距离上次一发文章已经过去两年多, XStudio 和 xlang已完善许多, xlang也支持了众多的平台和项目类型.

目前支持的平台包括windows\linux\macos\unix\android\ios\以及其他架构的linux嵌入式系统 , 应用方面也已经支持包括PC桌面应用\Web应用\服务器\移动app等.

而用xlang开发的 XStudio 也不仅仅局限用于xlang开发, 还支持了C/C++ 和安卓等开发, 这里主要介绍一下 XStudio 使用 CDE插件和mingw进行C/C++方面的开发.

官方网站 https://xlang.link/

介绍:
XStudio 是一个开源的多功能插件式的IDE(github, gitee), XStudio的插件和XStudio本身一样, 都是用xlang开发的, 如何使用插件定制自己的IDE请点击这里 ,而用于C/C++项目的CDE插件也是如此.

XStudio CDE & MINGW 套件是我个人整理的集成了mingw版本的 可视化开发\调试一体的集成开发环境(32位, 下载链接).

支持细节:

  1. 代码高亮
  2. 自动完成
  3. 定义\声明跳转
  4. 大纲显示
  5. 类视图
  6. 新建项目模板
  7. 类和方法向导
  8. 代码提示
  9. 代码诊断
  10. makefile构建
  11. 可视化项目配置
  12. 可视化调试
  13. 源码级调试
  14. 反汇编调试
  15. GDB命令手动调试
  16. 开发套件和LSP服务器自定义
  17. 界面风格和配色自定义

支持的编译 GCC ,clang
支持的调试器 gdb

集成mingw版本除了基本库之外,还包含 boost , gtk+3等常用库, 并集成了gtk的可视化UI编辑器glade.

代码高亮.
深色主题代码高亮
浅色主题代码高亮
自动完成:
辅助输入和自动完成
定义\声明跳转:
跳转到定义和声明
项目大纲和类视图:
项目大纲和类视图
新建项目模板:
新建项目向导

类和方法新建向导:
类和方法新建向导
代码提示:
代码信息提示
代码诊断:
代码诊断
使用makefile构建:
使用makefile等多种构建方式

可视化项目配置:
可视化项目配置
可视化调试:
可视化调试
源码级调试:
源码调试
反汇编调试:
反汇编调试
GDB命令手动调试
使用gdb命令调试

开发套件和LSP服务器自定义
开发套件和LSP服务器自定义
界面风格和配色自定义
界面风格和配色自定义

插件管理:插件管理

本软件是完全开源免费的, 欢迎各位看官和有需要的下载试用以及做二次开发,有任何问题可以在本文后面留言或者通过软件的菜单 [帮助] -> [发送反馈] 给我留言.

官方网站 https://xlang.link/
XStudio github仓库链接, gitee仓库链接
CDE插件项目github仓库链接
XStudio CDE & MINGW Release 下载链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个简单的 C++ 实现 MD5 算法的代码示例: ```cpp #include <iostream> #include <cstring> #include <cstdio> using namespace std; typedef unsigned int uint32_t; // 左移位数表 const uint32_t S[] = { 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22 }; // 常数表 const uint32_t K[] = { 0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, 0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501, 0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be, 0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821, 0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa, 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8, 0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed, 0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a, 0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c, 0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70, 0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x04881d05, 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665, 0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039, 0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1, 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1, 0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391 }; // 各轮移位数表 const uint32_t shift_table[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 1, 6, 11, 0, 5, 10, 15, 4, 9, 14, 3, 8, 13, 2, 7, 12, 5, 9, 14, 0, 4, 11, 15, 3, 8, 9, 14, 5, 12, 2, 7, 10, 0, 6, 13, 15, 9, 11, 3, 8, 12, 2, 7, 1 }; // 左移函数 inline uint32_t left_rotate(uint32_t x, uint32_t c) { return (x << c) | (x >> (32 - c)); } void md5(uint32_t *input, uint32_t length, uint32_t *digest) { // 初始化 uint32_t A = 0x67452301; uint32_t B = 0xefcdab89; uint32_t C = 0x98badcfe; uint32_t D = 0x10325476; for (uint32_t i = 0; i < length; i += 16) { uint32_t a = A, b = B, c = C, d = D; uint32_t *chunk = input + i; // 循环压缩 for (uint32_t j = 0; j < 64; j++) { uint32_t F, g; if (j < 16) { F = (B & C) | ((~B) & D); g = j; } else if (j < 32) { F = (D & B) | ((~D) & C); g = (5 * j + 1) % 16; } else if (j < 48) { F = B ^ C ^ D; g = (3 * j + 5) % 16; } else { F = C ^ (B | (~D)); g = (7 * j) % 16; } uint32_t temp = D; D = C; C = B; B = B + left_rotate((a + F + K[j] + chunk[g]), S[j]); a = temp; } A += a; B += b; C += c; D += d; } digest[0] = A; digest[1] = B; digest[2] = C; digest[3] = D; } int main() { char *str = "hello, world!"; uint32_t len = strlen(str); uint32_t *input = new uint32_t[(len + 8) / 4]; memcpy(input, str, len); input[len / 4] |= 0x80 << ((len % 4) * 8); input[(len + 8) / 4 - 2] = len * 8; uint32_t digest[4]; md5(input, (len + 64) / 64 * 16, digest); printf("%08x%08x%08x%08x\n", digest[0], digest[1], digest[2], digest[3]); delete[] input; return 0; } ``` 这个程序计算字符串 "hello, world!" 的 MD5 值,并输出结果。注:这个实现并没有对输入进行预处理,而是直接将其视为一连串的 8 位字符。在实际使用中,需要对输入进行填充和预处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值