C++宏 - 大写字符串

bfo*_*ops 6 c++ macros

我正在使用预处理器宏来声明一些重复变量,具体来说:

QuitCallbackType quitCallback;
LossCallbackType lossCallback;
PauseCallbackType pauseCallback;
KeyCallbackType keyCallback;
MouseCallbackType mouseCallback;
Run Code Online (Sandbox Code Playgroud)

我想使用预处理器宏来实现它,la


CREATE_CALLBACK_STORAGE(quit)
CREATE_CALLBACK_STORAGE(loss)
CREATE_CALLBACK_STORAGE(pause)
CREATE_CALLBACK_STORAGE(key)
CREATE_CALLBACK_STORAGE(mouse)
Run Code Online (Sandbox Code Playgroud)

它本质上是这样的:

#define CREATE_CALLBACK_STORAGE(x) capitalize(x)##CallbackType x##CallBack;
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点,所以我不必传递每个名称​​的大写和小写版本?

我意识到使用宏的打字并不多,但问题本身开始引起我的兴趣.

Mar*_*som 5

宏预处理器无法获取子字符串或大写字母。对不起。

如果您可以更改命名方案,您可能会取得更大的成功。例如:

QuitCallbackType _QuitCallback;
Run Code Online (Sandbox Code Playgroud)

编辑:我被警告不要使用前导下划线,但这个想法仍然适用:

QuitCallbackType callbackQuit;
Run Code Online (Sandbox Code Playgroud)

  • @Mark:以下划线开头后跟大写字母的名称,如示例中的“_QuitCallback”,保留用于任何地方的实现。这也适用于具有两个连续下划线的名称。顺便说一句,由于我在半小时左右之前评论了你的另一个答案,不,我没有“关注”你。:-) 我会在你编辑后删除这条评论。干杯, (7认同)