中文
注册

__builtin_prefetch 语义检查错误

错误信息

 error: argument to '__builtin_prefetch' must be a constant integer 
    __builtin_prefetch(address, forWrite); 
    ^

问题介绍

在这段代码中,因为__builtin_prefetch的第二个参数需要是常量,所以先用__builtin_constant_p检查forWrite是否是常量。但是,对于Clang而言,会出现语义检查错误。

代码示例

static void prefetchAddress(const void *address, bool forWrite) { 
    if (__builtin_constant_p(forWrite)) { 
        __builtin_prefetch(address, forWrite); 
    } 
}

解决方案

将函数转换为宏函数:

##define prefetchAddress(address,forWrite) do{\ 
  if (__builtin_constant_p(forWrite)) {      \ 
    __builtin_prefetch(address, forWrite);   \ 
  }                                          \ 
}while(0)
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词