【问题标题】:Switching between macro or function在宏或功能之间切换
【发布时间】:2015-03-27 17:08:10
【问题描述】:

我有三个文件。

  1. ass3.c
  2. ass3.h
  3. teacher.c

teacher.c 是提供给我的,不能以任何方式更改,另外两个文件是我编写的。

teacher.c 有 main() 函数,包括 ass3.h

ass3.c 还包括 ass3.hteacher.c 调用 ass3.c 中的函数。

程序可以运行,但我需要添加其他功能。

我需要添加让用户指定用户是否要使用宏或函数的功能(称为 isAvail())。现在程序只能使用 isAvail() 函数。

我该如何实施呢?要求的摘录是:

“将isAvail()实现为函数和使用条件处理的宏扩展(macro),用户可以在编译代码中选择宏或函数。如果IS_AVAIL(宏名)名称已定义,则应使用宏,如果未定义IS_AVAIL名称,则应使用函数”

再次提醒,我只能更改 Ass3.c 和 Ass3.h。

请指出正确的方向,如果可能的话,请给我一个例子。如果我需要添加更多详细信息,请见谅。

谢谢。

【问题讨论】:

  • 您可以只从stdin 读取一个函数,并根据它找到的内容,使用宏或函数,尽管应该相当清楚使用哪个...
  • @Senri 我知道这是你的第一个问题,你有没有拿tour

标签: c function macros


【解决方案1】:

只需检查 IS_AVAIL 是否是这样定义的

#ifdef IS_AVAIL
#define isAvail() MACRO_DEFINITION_HERE
#else
int isAvail(void) {return ?;}
#endif

其中? 是函数应返回的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2023-03-29
    • 1970-01-01
    • 2022-01-11
    • 2015-04-29
    相关资源
    最近更新 更多