c - 检查间隔范围内值的宏

标签 c macros c-preprocessor

#include <stdio.h>
#include <stdbool.h>
#include <ctype.h>
#define CHECK(x,y,n) (x > 0 && x < n && y > 0 && y < n ? 1 : 0))
int main(void)
{
/*char s[5];
int i;
strcpy(s,"abcd");
i = 0;
putchar(s[++i]);*/
int i = CHECK(2,3,10);
    printf("%d",i);
  return 0;
}

我想声明一个宏来检查两个值 x 和 y 是否在区间内,但是当我尝试编译和构建时,我从编译器中得到这些错误:

line 4 error: expected ',' or ';' before ';' ')' token

最佳答案

宏中多了一个)。无论如何,我建议将所有宏参数括在括号中以避免优先级问题和其他一些宏陷阱:

 #define CHECK(x,y,n) ((x) > 0 && (x) < (n) && (y) > 0 && (y) < (n) ? 1 : 0)

关于c - 检查间隔范围内值的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32055453/

相关文章:

ios - 根据目标加载不同的 plist

c - 宏 SWAP(t,x,y) 交换两个类型为 t 的参数

c - MAX31865 SPI通信失败

c - 嵌套循环 C 编程 - 我需要扫描输入以查找字母集

c - 归并排序功能

c - 使用 C 的 2-rail 和凯撒密码

assembly - 如何编写宏来重复某些内容直到特定地址?

macros - 每次运行 SAS Call 执行输出都会发生变化

c++ - 宏中使用的模板参数有问题

c - #include 语句出现意外错误