2015-02-24 2 views
3

Я нашел флаг _CRTNOALIAS в определении функции C++ в среде Windows. не знаю, что он делает. Любой там, чтобы помочьЧто делает _CRTNOALIAS do

void _CRTNOALIAS foo() 
{ 
} 
+0

никогда не видел этого раньше! Интересно! –

ответ

1

Это (вероятно) определяется как

#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.