gpt4 book ai didi

c - 将类型传递给 C 宏

转载 作者:太空宇宙 更新时间:2023-11-04 06:24:14 24 4
gpt4 key购买 nike

我试图在 C 宏中传递一个类型,但出现错误。

#include <stdio.h>)

int size = 0;
#define SIZEOF(TYPE) \
TYPE _array_[2]; \
size = (char*)(&_array_[1]) - (char*)(&_array_[0]);

int main(int argc, char** argv, char** envp) {
int array[2];
int x = SIZEOF(int);
printf("Size Of Integer = %d", SIZEOF(int));
return 0;
}

最佳答案

宏扩展是文本替换。您的代码扩展为:

int x = int _array_[2]; size = (char*)(&_array_[1]) - (char*)(&_array_[0]);

初始部分 int x = int 是一个语法错误。

你可以在不改变宏的情况下让你的代码工作:

SIZEOF(int);
printf("Size Of Integer = %d", size);

一个改进是将变量的名称作为参数传递给宏,而不是使用全局变量。

关于c - 将类型传递给 C 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29245708/

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