@SkyWingF 后面给项目增加一个 类似 "最佳实践" 章节总结这些:
- 类型别名用using 代替 typedef
- 引用的使用
- 尽量少使用宏 非必要不使用
- 属性标识 [[nodiscard]], [[deprecated]]
- ...
@SkyWingF 后面给项目增加一个 类似 "最佳实践" 章节总结这些:
import std;
namespace mcpplibs { // 1.命名空间全小写
class StyleRef { // 2.类型名大驼峰
private:
int data_; // 3.私有数据成员 xxx_
std::string fileName_; // std::string
public: // 4. 构造函数 / Rule of Five(Big Five)单独放一个 public 区域
StyleRef() { }
StyleRef(const StyleRef &obj) { /* ... */ }
StyleRef(StyleRef &&) { /* ... */ }
StyleRef & operator=(const StyleRef &) { /* ... */ }
StyleRef & operator=(StyleRef &&) { /* ... */ }
~StyleRef() { /* ... */ }
public: // 5.公有函数区域
// 函数名 下划线分割 / snake_case
/* 7. fileName 小驼峰 */
void load_config_file(std::string fileName) {
// 成员函数如无特殊要求接口和实现不分离
parse_(fileName);
}
private:
// 6.私有成员函数以 `_` 结尾
void parse_(std::string config) {
}
};
}
标识符命名风格
_后缀@Phtato 目前默认是模块化的写法, 20之前的话 可以参考 google-style/cpp
社区有个主要的任务的推模块化库和相关工具链使用和普及
最新版本该问题已经解决
xim --update index
xlings update d2x
@sunrisepeak 安装头文件后, 然后再在d2mcpp项目根目录运行xlings install 会重新自动配置和生成新的头文件索引
这个问题后续版本应该就没有了
@fillSea 缺少linux头文件, 运行下面的命令安装linux-header 后再试一试
xlings install linux-headers
@g202080272 在 关于学习C++中的int main中new一个新的伐对象的困惑 中说:
Book paper_book("The Lord of the Rings");
EBook* digital_book = new EBook("A Brief History of Time", 2048);
std::cout << "--- Library is operating ---" << std::endl;
delete digital_book;
通过new创建的对象为动态内存分配的对象, 程序员将获得对象生命周期控制权, 例如后面可以使用delete去删除结束对象生命 - 即掌握了创建和销毁的控制权
而对比paper_book的生命周期是由 编译器/作用域 来自动控制的
两种对比
核心概念: 获得更大权力, 对应需要承担更大的责任
目前社区准备制作一份 现代C++ (特别是模块化) 相关的编码和项目组织结构方面的风格参考项目, 例如 模块和头文件兼容、命名风格、接口导出、以及常用技巧的"最佳"实践等.....
欢迎大家在这里交流、讨论、反馈

用下面命令清理一下缓存, 然后再试一试
xlings self clean
可以修改 config.xlings配置文件切换到中文

如果使用的工具是最新d2x 0.1.1版本, 可以在项目根目录.d2x.json文件修改
详情见项目配置文档: https://mcpp-community.github.io/d2mcpp/base/chapter_1.html
@Saaqq 目前d2x工具使用c++重构了, 可以更新一下 应该不会有这个问题了
先更新一下d2x工具
xlings self update
xim --update index
xlings update d2x
然后再到项目目录运行下面命令进入练习模式
d2x checker
注: 最新版本的d2x也支持配置AI大模型做智能引导, 也可以玩一玩

写了一个现代C++模块化的编码/项目风格参考文档, 附有项目/代码示例, 欢迎交流


llmapi 和 xlings 都算是初期项目, 有什么问题或想法都可以反馈到项目issue里
感觉可以把这个系列整理成一个GitHub 仓库 包含文档和对应的练习或演示代码
让读者上手实操/改改东西 用 strace 等一些工具 追一追 系统调用 观察真实机器上的效果 之类的
体验感应该能增强不少
感觉可能和gcc工具链有关
llmapi我好想忘记加xlings的依赖描述文件了, d2x是加了的
可以, 手动使用 xlings install gcc@15.1 安装gcc15
然后在项目目录清除一下缓存
xmake clean
rm .xmake build -r
xlings install gcc@15.1
g++ --version
xmake build
如果上面过程出现问题 可以在把log贴上来
@mikami-w 编译一个最小的 import std.compat; 程序 可以通过吗
@Yozi 在 项目想法: mcpp-start: 完全0基础的现代C++社区教程项目 - 想法讨论 中说:
AI 辅助学习确实很香,但也有个坑:如果引导/提示词没调好,AI 输出太多反而容易理解得“热闹但不深”,学着学着有点迷迷糊糊
目前在重新实现d2x这个工具 (还没替换原版本), 目前使用的是 固定提示词模板 + 对应原练习代码 + 包含练习意图 的引导方式, 可能能缓解一些这个问题

这不过, 目前还是初步尝试, 后面打算多探索一些这方面
@Yozi 在 项目想法: mcpp-start: 完全0基础的现代C++社区教程项目 - 想法讨论 中说:
比如一个小型游戏:我自己学 Rust 时就拿“穿越火线”当主题,用游戏机制去类比代码概念——背包像数组/容器、武器像结构体、状态切换像枚举/状态机……会特别好理解
这是一个好的建议, 用一个具体可感知的目标/项目, 然后把项目拆解 和 基础知识对应 可能是一个比较好的切人点
只不过, 可能项目要选一个简单一点的 (或许实现一个简单的Agent例子不错), 穿越火线 这种对应应该是有一些编程基础, 然后需要做个项目, 把技能和应用建立联系, 感觉和我们现在在策划的 模块化实现 Mini STL 标准类似
对于初学者 或 几乎没有接触过编程的同学
感觉可能 一半代码 + 一半C++相关的人文 才能坚持下去
如果你是一个C++初学者, 对上手d2mcpp项目, 感觉有些吃力, 可以反馈一些关于对入门级教程项目的一些想法
欢迎大家评论区交流讨论, 来帮助我们调整和优化项目的开发和设计...