c – _CRTNOALIAS做了什么

我在
Windows环境中的C函数定义中找到了_CRTNOALIAS标志.不知道它做了什么.

有人帮忙

void _CRTNOALIAS foo()
{
}

最佳答案 这(可能)定义为

#define _CRTNOALIAS __declspec(noalias)

这将注释函数为noalias.

noalias注释是一个帮助优化器的指令.它指示编译器函数本身不引用全局状态,而只引用指针参数的第一级间接.

考虑以下:

int *global_bar;

void __declspec(noalias) foo (int *f) {
    int i = *f; // you can do this
    int i = f[0]; // and this

    *global_bar = *f; // YOU CAN'T DO THIS!
}

有关更多信息,请参阅MSDN documentation.

点赞