Tag: CPP

  • 【BTC源码系列】随机漫步Day1

    程序入口

    比特币源码是用C++写的,构建系统用的CMake,在CMakeLists.txt中可以找到add_executable命令,含义是最终构建的二进制产物,此命令的参数中会指定源文件。

    重要设计

    主流程

    • 创建全局上下文
    • 连接服务端信号处理函数
    • 解析命令行参数
    • 启动程序

    数据结构

    疑问

    • noui_connect貌似是注册UI事件的,但是名字又叫noui

    欠缺的知识

    • C++命名空间的规则
      • 实际的大型项目中常用的idiom,即编程惯用法

    参考资料

    • 比特币node启动的命令行参数
  • C++宏特性

    背景

    宏(Macro)是C++里的一个让人又爱又恨的特性,非常难以掌握。然而,悲剧的是,许多大型C++项目中宏的使用满天飞,因此宏是一个C++程序员难以摆脱的特性,我们有必要梳理一下宏的用法。

    特性

    #(井号/Hash Symbol)

    • 单独一个#放在宏定义参数的前面时,语义为将宏定义的参数转换为字符串常量
    • 连续两个#放在两个宏定义参数的中间时,语义是将两个宏定义参数拼接为一个符号。