gpt4 book ai didi

c - 当指针类型不同时如何产生编译错误?

转载 作者:行者123 更新时间:2023-12-01 23:35:26 24 4
gpt4 key购买 nike

当两个指针 a 和 b 具有不同的基类型时,如何编写一个生成编译错误的宏 CHECK(a, b)。

CHECK((int*)0, (char*)0) -> compilation error
CHECK((int*)0, (int*)0) -> works

我正在寻找一些 C89 代码,但 C99 + gcc 扩展也可以。

最佳答案

EDIT 现在适用于任何类型,而不仅仅是指针

使用 GCC 扩展或多或少从 linux 内核中提取的东西 typeof() .

这会在编译时生成警告,它也适用于整数指针类型

#define CHECK(a, b) do { \
typeof(a) _a; \
typeof(b) _b; \
(void) (&_a == &_b); \
} while (0)

int main(int argc, char **argv)
{
int *foo;
int *bar;
char *baz;

CHECK(foo, bar);
CHECK(bar, baz);
return 0;
}

关于c - 当指针类型不同时如何产生编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1292532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com