【问题标题】:Odd macro and no operation variable usage? [closed]奇怪的宏和没有操作变量的使用? [关闭]
【发布时间】:2011-11-07 07:18:13
【问题描述】:

这两个sn-p代码在这里是什么意思?

#define HTTPH(a, b, c, d, e, f, g) char b[] =  "*" a ":";  
void function(char *p) {
  (void)p;
}

【问题讨论】:

  • 请不要一次问两个问题,这显然是不同的,并给他们一个恰当描述它们的标题。

标签: c++ c linux function macros


【解决方案1】:

首先是通过宏进行字符串连接。它类似于:

#define STR3 STR1 STR2 

这样,预处理器将连接 STR1 和 STR2 并使用它来代替 STR3。
Example.

第二种语法:

void function(char *p)
{
  (void)p;
}

表示指针变量p 当前未使用。未使用的变量很少会导致编译器警告,这种结构通常用于消除未使用的变量警告。

对于(void)p;,指针p 在语句中使用(实际上它什么也不做)但它满足编译器该变量在某处使用,因此它不会产生警告。

【讨论】:

  • 我已经看到了避免未使用变量的编译器警告。
  • @PatrickB.: 没错!
【解决方案2】:

"*" a ":" 是简单的字符串连接。就像"a" "b" "c" 等价于"abc"

void 函数不做任何事情,但它可能是其他东西的占位符。您需要显示更多上下文才能获得正确的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-19
    • 2021-07-26
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多