使用include宏展开定义宏

时间:2015-05-26 17:58:43

标签: c++ c macros include

我正在尝试定义一个宏。这个想法是,当它扩展时,它将包括一个标题。例如:

<html ng-app="mySuperApp">
  <head>
    <meta charset="utf-8">
    <title>
      Toggle button
    </title>
    
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
    
    <link href="//code.ionicframework.com/nightly/css/ionic.css" rel="stylesheet">
    <script src="//code.ionicframework.com/nightly/js/ionic.bundle.js"></script>
    
  </head>
  <body class="padding" ng-controller="MyCtrl">
    
    <button class="button button-primary" ng-model="button" ng-click="button.clicked=!button.clicked" ng-class="button.clicked?'button-positive':'button-energized'">
      Confirm
    </button>
  </body>
</html>

非常感谢。

2 个答案:

答案 0 :(得分:4)

正如其他人所指出的那样,你无法从宏中生成指令。

但是,您可以从宏中生成参数指令:

#define INCF(F) INCF_(F)
#define INCF_(F) #F
#define BAR foo.h

#include INCF(BAR)  // same as #include "foo.h"

但是你无法摆脱那个明确的#include,或者把它插入到不同行的中间,或类似的东西。

答案 1 :(得分:3)

这不可能。

  

生成的完全宏替换的预处理标记序列不会作为预处理指令处理,即使它类似于一个,[...]

这个特别引用来自C ++标准的合理最新草案,但是在措辞方面略有改变,同样的基本思想几乎永远存在。