宏从周围环境中获取输入
Macro taking input from surrounding context
我知道这可能有点过分,但我想知道是否有什么方法可以很好地做到这一点:
我有一个函数映射:std::map<std::string, std::function<int(int)> > fnmap;
还有一些我想添加到这个映射中的函数
有没有办法修饰一下函数,这样我就可以有:
MAPNAME("FN") int fn(int param) {}
MAPNAME("FN2") int fn2(int param2) {}
. .
,结果应该是fnmap["FN"] = &fn;
正如我上面所说的,这有点牵强,但是,我认为值得一问!
struct Remember {
static std::map<std::string, std::function<int(int)> > map;
Remember (int (*f) (int), const char * name) {
map [name] = f;
}
};
// Needs anonymous namespace to be able to include it more than once in a header.
#define MAPNAME(x) namespace {Remember _##__LINE__ (x, #x);}
int f1 (int);
int f2 (int);
MAPNAME (f1)
MAPNAME (f2)
函数需要在调用MAPNAME
之前声明,所以它不能算作装饰。
宏不理解C语言的styntax,所以他们不能拉入任何你没有给他们的"上下文"
相关文章:
- 如何从用户那里获取输入并将其存储在向量中?
- 代码在执行之前终止,并且没有从用户那里获取输入
- 从用户获取输入/输出
- TFLite 隔离错误,通过获取C++输入和输出
- 如何使 std::istream 从键盘获取输入(如 std::cin)?
- 使用 qt 或 c++ 从桌面获取输入和输出
- 您如何在C++中不断获取输入?
- 从源代码本身C++获取输入
- 函数,从问题中获取输入,并在主函数中使用该输入
- 当我们声明 cin 为 int 并从 cin 中获取输入并在 cout 中打印 cin 时会发生什么?
- 如何在 std::map 中从 std::vector of std::p air 中获取输入?
- 有没有办法将 getline() 与外部文本文件一起使用,然后重新获得 cin 的控制权以从控制台获取输入?
- 从用户获取输入
- 我需要编写一个代码,从用户那里获取输入(句子)并停止在@处
- C 程序在获取输入[控制台应用程序]时跳过行
- 我在C++从函数中的用户获取输入、添加到数组和打印该数组时遇到问题
- 从用户那里获取输入,直到他输入一个数字
- 如何使用数组获取输入,并将其存储在record.h类的主类中的变量中
- getline 语句未获取输入
- 用户定义的功能用于竞争编程中,以获取输入