C++ 宏函数常量参数

C++ 宏函数常量参数,c++,c,macros,constants,C++,C,Macros,Constants,我定义: #define macroFunction(A,...) function((uint8_t*) A) 然后 void function(const uint8_t*A){ #do Something } 这样行吗?或者有没有办法告诉宏只接受常量 ->这是一个编译和工作,我想知道这是否是一个良好的做法 ->是的,宏的使用是必要的,我正在展示一个简化的示例 谢谢 这样行吗 不,我不认为这有什么用处 有没有办法告诉宏只接受常量 没有 即使对于一个适当的函数,传递给接受

我定义:


#define macroFunction(A,...)    function((uint8_t*) A)

然后

void function(const uint8_t*A){
    #do Something
}
这样行吗?或者有没有办法告诉宏只接受常量

->这是一个编译和工作,我想知道这是否是一个良好的做法

->是的,宏的使用是必要的,我正在展示一个简化的示例

谢谢

这样行吗

不,我不认为这有什么用处

有没有办法告诉宏只接受常量

没有


即使对于一个适当的函数,传递给接受常量的函数或接受非常量参数的函数的内容也没有区别。它们之间的唯一区别是函数不能修改常量变量。鉴于函数最好保持简短,参数的常量很少有用。

不太清楚宏与函数定义的关系。宏既不是调用,也没有参数类型或声明无返回类型。它是什么?当int通过值传递时,将其限定为const对调用方没有任何区别。要使常量有意义,参数必须是指针或引用。而且,不,很少需要使用宏——在现实世界中,只有在使用标准预定义的include-guard或宏时才需要使用宏。在任何情况下,你的帖子读起来都像是XY问题——这意味着你已经决定某个问题的解决方案是一个宏,但其他人会不同意——如果他们只知道你的实际问题的话。@idclev463035818我想我已经纠正了它,对不起,我仍在试图理解:@Ivan you将par1改为a,但我仍然不明白那个宏应该有什么用。你不能用它来调用函数,也不能用它来声明函数,它是做什么的?@Peter你说得对,它是标准的一部分:在我们的例子中,参数确实是一个指针单位,我在写这个问题时选择了任何类型
#define macroFunction(par1,...)    function(int A)
void function(const int A){