【问题标题】:can we declare a variable in #define directive in c?我们可以在c的#define指令中声明一个变量吗?
【发布时间】:2015-08-16 15:41:18
【问题描述】:

以下代码 sn-p 的输出是什么??

#include<stdio.h>
#define MUL(A,B) int t; t=A*B;
void main()
{
    int A=10,B=12;
    printf("%d", MUL(A,B));
}

输出会是一个错误(比如不允许声明)还是给定的数字会相乘???

#define 预处理器指令中是否允许声明???

【问题讨论】:

  • 你自己测试了吗?并回答,它会导致错误。您只需要#define MUL(A, B) A*B

标签: declaration c-preprocessor


【解决方案1】:

编译器会将您的printf("%d", MUL(A,B)) 替换为printf("%d", int t; t=A*B)。这会导致错误Type name is not allowed,因为你在printf函数中传递了int typename。
是的,你可以使用#define声明一个变量:

#include<stdio.h>

#define MUL(A,B) int t; t=A*B;

void main()
{
    int A=10, B=12;
    MUL(A,B);
    printf("%d", t);
}

它不会导致错误。在MUL(A,B) 之后就可以访问t 变量了。
但是以这种方式声明变量对于理解和调试来说确实很复杂。避免它。

【讨论】:

    猜你喜欢
    • 2016-02-29
    • 2022-01-09
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多