gpt4 book ai didi

c - 从代表不同值的不同文件访问 C 中的相同宏

转载 作者:太空宇宙 更新时间:2023-11-04 04:27:47 26 4
gpt4 key购买 nike

我有两个不同的头文件,它们都有相同的宏,代表一些方程式。例如;我在 function1.h 和 function2.h 中都有 F1,但这两个代表两个不同的方程式。在某些情况下,我需要使用 function1.h 中的 F1,而在其他一些情况下,我需要使用 function2.h 中的 F1。我怎么可能在 C 中实现这个逻辑。

//function1.h
#define F1 x+10
#define F2 x*10
//function2.h
#define F1 x+210
#define F2 x*99

//main.c
#include "function1.h"
#include "function2.h"

int x = 10;

if(..something..)
return(F1) //from function1.h
if(..something..else..)
return(F1) //from function2.h

//无论如何要毫无歧义地实现这个逻辑

最佳答案

如果他们在做不同的事情,他们应该以不同的方式命名(如果他们是您建议的不同方程式的“速记”)。预编译器操作可能会做一些您意想不到的事情。因此,例如,第二个头文件,如果与第一个头文件列在同一个源文件中,实际上可能会将 F1 替换为第一个中相同宏名称的别名代码。不过,这可能会给您带来编译错误。

请记住,预编译器只是将宏标签替换为被宏标签“别名化”的代码。这就是编译后的源代码。您可能知道这一点,但有些人认为宏是某种类型的函数命名法。

#define F1 x+10
#define F2 x*10
//function2.h
#define F1 x+210
#define F2 x*99

更改为:

#define F1(A) x+A
#define F2(A) x*A

您不需要在每种情况下都使用两个不同的宏。您不应该做您当前正在做的事情 - 请参阅上一段。

使用:

return(F1(10));

return(F1(210));

视情况而定。

关于c - 从代表不同值的不同文件访问 C 中的相同宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39830471/

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