Итак, мы все слышали строку don't-use- register
, аргументируя тем, что попытка оптимизировать компилятор - это безумное поручение.
register
, из того, что я знаю, на самом деле ничего не говорит о регистрах CPU, просто, что данная переменная не может быть косвенной ссылкой. Я буду опасаться, что его часто называют устаревшим, потому что компиляторы могут автоматически обнаружить отсутствие адресации, делая таким образом прозрачность прозрачности.
Но если мы твердо придерживаемся этого аргумента, не может ли он быть выровнен при каждом ключевом слове с оптимизацией в C? Почему мы используем inline
и C99 restrict
например?
Я предполагаю, что некоторые вещи, такие как aliasing, выводят некоторые оптимизации hard или даже невозможны, поэтому, когда линия выводится до того, как мы начнем разбираться в Достаточно умный компилятор территория?
Где должна отображаться линия на C и С++ между ложной подачей информации о оптимизации компилятора и предполагающей, что она знает, что она делает?
EDIT: Йенс Густедт указал, что мое объединение C и С++ неверно, поскольку два из ключевых слов имеют семантические различия, а один из них не существует в стандартном С++. У меня была хорошая ссылка о register
в С++, которую я добавлю, если найду ее...