代码之家  ›  专栏  ›  技术社区  ›  Francisco Ryan Tolmasky I

通过定义将变量传递给#include#define

  •  1
  • Francisco Ryan Tolmasky I  · 技术社区  · 15 年前

    是否有可能按照以下思路做一些事情:

    #define import_and_other(s)\
    something\
    #include s
    

    import_and_other("file.h")
    

    变成:

    something
    #include "file.h"
    

    基本上,某些文件在包含之前总是需要执行相同的操作,因此我想总结一下#include来执行这些操作。

    3 回复  |  直到 10 年前
        1
  •  2
  •   Community datashaman    4 年前

    号码

    C99标准规定(第6.10.2节):

    # include pp-tokens new-line
    

    指令中包含后的标记的处理方式与普通文本中的处理方式相同(每个 当前定义为宏名称的标识符由其替换列表替换 前两种形式。

    但是,还有另一条规则(第10.6.3.2节,关于“运营商”)规定:

    对于类似宏的函数,替换列表中的每个#预处理令牌应

    宏展开中的“#include s”无法满足此约束条件-单词“include”不是类宏函数的参数。

    未处理生成的完全由宏替换的预处理令牌序列 作为预处理指令,即使它类似于预处理指令。

    这意味着您不能从宏扩展的结果生成任何预处理器指令。

        2
  •  1
  •   Don    15 年前

    不,但您可以创建自己的包含文件,同时包含这两个文件,然后#包含它。使用import_和_其他您选择的名称命名头文件。#定义替换文本实际上是多行的,它只是为了您的利益而包装的。

        3
  •  1
  •   Vaibhav    15 年前