【发布时间】:2023-04-01 06:21:01
【问题描述】:
我正在尝试从多个宏/值创建一个字符串以用于#include。我这样做是为了清理简单状态系统中初始状态的一些代码。
我有 2 个默认的、可重新定义的宏(如果未定义,则有一个默认值)
#define DEFAULT_STATE StateName // name of class
#define DEFAULT_STATE_LOCATION states/ // location of header file from root
从root 中的文件 4 文件夹中使用了包含指令,因此包含应该如下所示
#include "../../../../states/StateName.h"
基于上面的例子。
所以我想从 4 个值中定义一个宏。
../../../../
DEFAULT_STATE_LOCATION
DEFAULT_STATE
.h
进入一些宏,比如DEFAULT_STATE_INCLUDE
所以我可以说
#include #DEFAULT_STATE_INCLUDE
(to stringize the value for quotes)
这样我可以在前缀头中更改默认状态和默认状态的头文件根路径,并且使用#include的源不必更新,我可以省略每次重新定义的常量。
我没有在DEFAULT_STATE 宏中包含.h,因为我使用相同的宏来创建默认状态的实例。
我尝试过使用串联 ## 和 stringize 运算符,以及我在网上找到的一些技巧,但没有任何效果。
如果需要,我可以在自己的宏中定义../../../../ 和.h。
只是简单
#define DEFAULT_STATE_INCLUDE ../../../../ ## DEFAULT_STATE_LOCATION ## DEFAULT_STATE ## .h
#include #DEFAULT_STATE_INCLUDE
给出大量错误。
感谢任何帮助。 谢谢
【问题讨论】:
-
这通常是构建系统定义包含路径的角色
标签: c++ objective-c c xcode gcc