C++ 14 之 宏函数

c14宏函数.cpp

cpp 复制代码
#include <iostream>
using namespace std;

// #define PI 3.14
// 宏函数
// 宏函数缺陷1: 必须用括号保证运算的完整性
#define MY_ADD(x,y) ((x)+(y))

// 宏函数缺陷2:即使加了括号,有些运算依然与预期不符
#define MY_COM(a,b) (((a) < (b)) ? (a) : (b))

// 普通函数 不会出现与与其不符的恩情况
// void my_com_pu()
// {

// }

int main()
{
    // 缺陷1:
    // int a = 10;
    // int b = 20;
    // int res = MY_ADD(a,b);
    // int res = MY_ADD(a,b) * 2;  // a + b * 2   // 结果为50
    // int res = (MY_ADD(a,b)) * 2;    // (10 + 20) * 2
    // int res = MY_ADD(a, b) * 2;
    // cout << res << endl;
    // 
    // 缺陷2:
    int a = 10;
    int b =  20;
    int res = MY_COM(++a,b);    // 我认为是11 实际展开结果为:++a < b ? ++a : b 实际结果为12
    cout << res << endl;

    

    return 0;
}
相关推荐
saltymilk3 小时前
使用 C++ 模拟 ShaderLanguage 的 swizzle
c++·模板元编程
xlp666hub9 小时前
Leetcode第五题:用C++解决盛最多水的容器问题
linux·c++·leetcode
得物技术11 小时前
搜索 C++ 引擎回归能力建设:从自测到工程化准出|得物技术
c++·后端·测试
xlp666hub1 天前
Leetcode 第三题:用C++解决最长连续序列
c++·leetcode
会员源码网1 天前
构造函数抛出异常:C++对象部分初始化的陷阱与应对策略
c++
xlp666hub1 天前
Leetcode第二题:用 C++ 解决字母异位词分组
c++·leetcode
不想写代码的星星1 天前
static 关键字:从 C 到 C++,一篇文章彻底搞懂它的“七十二变”
c++
xlp666hub2 天前
Leetcode第一题:用C++解决两数之和问题
c++·leetcode
不想写代码的星星2 天前
C++继承、组合、聚合:选错了是屎山,选对了是神器
c++
不想写代码的星星3 天前
std::function 详解:用法、原理与现代 C++ 最佳实践
c++