c++ - 将指针传递给宏的省时方法

标签 c++ c macros

我的大部分代码都涉及将内存位置的地址传递给几个完成所需工作的宏。

您能否解释一下从时间效率角度来看哪种方式是传递地址的最佳方式。

示例代码:

#define FILL_VAL(ptr  /* uint8_t* */  )    \
        do                                 \
        {                                  \
           /* Macro which does the job */  \
                                           \
        }while(0);

uint8_t *buf = malloc(100);
uint16_t buf_index = 0;

//Method 1:

FILL_VAL(&buf[buf_index])

//Method 2:
FILL_VAL( buf + buf_index)

最佳答案

宏/定义只是文本替换。因此,它们不能直接影响目标程序的“时间/空间/任何效率”。

所以基本上你的问题必须改写为“我的编译器是否会为包含 buf + buf_index&buf[buf_index] 的(类似)表达式生成相同的代码”?

实际上,只有现场实验才能证明这一点,但生成的代码将是相同的是一个非常合理的猜测。

关于c++ - 将指针传递给宏的省时方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59748206/

相关文章:

c - 中止核心转储

c - 这个C宏是什么意思?

c++ - 一些简单的构造函数代码的解释

c++ - Lambda 函数作为基类

c - 我的 c 代码中遇到段错误

c++ - TreeView控件和非递归

c - 在另一个宏声明中使用宏

macros - 具有两个参数的宏 SAS 9.4

c++ - 不能用 Eigen 在二维上做收缩?

c++ - mfc中子窗口的onPaint在父窗口重绘