[C++] 纯文本查看 复制代码
#ifdef __CHECKER__
...
# define __acquire(x) __context__(x,1)
# define __release(x) __context__(x,-1)
...
#else
# define __acquire(x) (void)0
# define __release(x) (void)0
...
#endif
[C++] 纯文本查看 复制代码
struct symbol_list *sparse_initialize(int argc, char **argv, struct string_list **filelist)
{
....
add_pre_buffer("#define __CHECKER__ 1\n");
...
}
[C++] 纯文本查看 复制代码
void add_pre_buffer(const char *fmt, ...)
{
va_list args;
unsigned int size;
struct token *begin, *end;
char buffer[4096];
va_start(args, fmt);
size = vsnprintf(buffer, sizeof(buffer), fmt, args);
va_end(args);
begin = tokenize_buffer(buffer, size, &end);
if (!pre_buffer_begin)
pre_buffer_begin = begin;
if (pre_buffer_end)
pre_buffer_end->next = begin;
pre_buffer_end = end;
}