繁体   English   中英

了解 C 中定义变量的宏函数 [关闭]

[英]Understanding macro functions in C that define variables [closed]

根据我的理解,预处理器指令用于在编译之前修改源代码。 我正在编写一些作业代码,但我的宏导致错误。 在我的作业中,我必须使用 main() 编写几个具有相同变量的文件。 我想使用这样的宏。

#define SETUP (i)\
     char* memory = (char*) malloc(sizeof(char)*(i));\
     char* memory2 = (char*) malloc(sizeof(char)*(i))
#define CLOSE ()\
     free(memory);\
     free(memory2)

int main () {
     int i = 7;
     SETUP(i);

/****************************/
Do stuff with memory and memory2
/*****************************/

     CLOSE();
}

这样我就可以更改每个文件的 main() 的开头和结尾,而不必更改每个文件。 有人可以告诉我我不明白的地方吗?

在宏定义中,您在宏名称和左括号之间添加了一个空格:

#define SETUP (args_needed)\

这定义了一个普通的宏,而不是一个带参数的宏。 因此args_needed不是宏参数并且未定义。

删除宏名称和左括号之间的空格:

#define SETUP(args_needed)\

调用宏时插入空格就可以了:

SETUP (10);

但这被许多人认为是糟糕的编码风格。

你没有在任何地方声明i SETUP(i); 只是将i传递给宏参数i ,因此宏扩展到的代码包含未声明的i 你可能想要像SETUP(10);这样的东西SETUP(10); 反而。

还有这里

(char*) memory

不是你如何声明一个变量。 这是一个类型转换,它失败了,因为memory未定义。 去掉括号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM