本文整理汇总了C++中symbolt::clear方法的典型用法代码示例。如果您正苦于以下问题:C++ symbolt::clear方法的具体用法?C++ symbolt::clear怎么用?C++ symbolt::clear使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类symbolt
的用法示例。
在下文中一共展示了symbolt::clear方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: to_symbol
void ansi_c_declarationt::to_symbol(
const ansi_c_declaratort &declarator,
symbolt &symbol) const
{
symbol.clear();
symbol.value=declarator.value();
symbol.type=full_type(declarator);
symbol.name=declarator.get_name();
symbol.base_name=declarator.get_base_name();
symbol.is_type=get_is_typedef();
symbol.location=declarator.source_location();
symbol.is_extern=get_is_extern();
symbol.is_macro=get_is_typedef() || get_is_enum_constant();
symbol.is_parameter=get_is_parameter();
// is it a function?
if(symbol.type.id()==ID_code && !symbol.is_type)
{
symbol.is_static_lifetime=false;
symbol.is_thread_local=false;
symbol.is_file_local=get_is_static();
if(get_is_inline())
symbol.type.set(ID_C_inlined, true);
if(config.ansi_c.mode==configt::ansi_ct::flavourt::MODE_GCC_C ||
config.ansi_c.mode==configt::ansi_ct::flavourt::MODE_ARM_C_CPP)
{
// GCC extern inline cleanup, to enable remove_internal_symbols
// do its full job
// https://gcc.gnu.org/ml/gcc/2006-11/msg00006.html
// __attribute__((__gnu_inline__))
if(get_is_inline())
{
if(get_is_static()) // C99 and above
symbol.is_extern=false;
else if(get_is_extern()) // traditional GCC
symbol.is_file_local=true;
}
}
}
else // non-function
{
symbol.is_static_lifetime=
!symbol.is_macro &&
!symbol.is_type &&
(get_is_global() || get_is_static());
symbol.is_thread_local=
(!symbol.is_static_lifetime && !get_is_extern()) ||
get_is_thread_local();
symbol.is_file_local=
symbol.is_macro ||
(!get_is_global() && !get_is_extern()) ||
(get_is_global() && get_is_static()) ||
symbol.is_parameter;
}
}