假设我有以下程序:
__attribute__((annotate("ex"))) void ex() {};
void val() {};
__attribute__((annotate("foo"))) void foo() {
ex();
cout<<"You have called a function with an attribute"<<endl;
val();
cerr<<"Error!You have called a function without an attribute"<<endl;
}
int main()
{
foo();
return 0;
}
如果你观察,main()调用foo()和foo()依次调用ex()和val()。当调用ex()时没有问题,因为它有一个与之关联的属性但是当它调用val(),它应该显示错误消息,指出此函数没有任何属性。
因此,为此,我需要跟踪哈希表中具有属性且没有属性的函数,并在调用函数时检查它。
并且,我不知道如何做到这一点?我现在希望它清楚。
答案 0 :(得分:0)
看起来您需要使用结构或类。
我会给你一个参数,你可以扩展到一个函数。
函数参数具有名称和类型:
struct Function_Parameter
{
std::string name;
std::string type;
};
一个函数还有一个名称和一个返回类型:
struct Function_Token
{
std::string name;
std::string return_type;
};
函数可以包含零个或多个参数。因此通常意味着某种容器。因此,请使用std::vector
:
struct Function_Token
{
std::string name;
std::string return_type;
std::vector<Function_Parameter> parameters;
};
许多编译器可能会将名称转换为数值(使用某种散列函数或表格)。这通常会加快编译速度,因为字符串需要很长时间才能进行比较。