Итак, мы все слышали, что линия не используется - register
, рассуждение заключается в том, что попытка оптимизировать компилятор - это поручение дурака.Являются ли ключевые слова оптимизации в C и C++ разумными?
register
, из того, что я знаю, на самом деле ничего не говорит о регистрах ЦП, так как данная переменная не может быть указана косвенно. Я буду опасаться, что его часто называют устаревшим, потому что компиляторы могут автоматически обнаружить отсутствие адресации, делая таким образом прозрачность.
Но если мы твердо придерживаемся этого аргумента, не может ли он быть выровнен при каждом ключевом слове с оптимизацией в C? Почему мы используем inline
и C99's restrict
?
Я полагаю, что некоторые вещи, как наложения макияжа выводя некоторые оптимизации трудно или даже невозможно, поэтому, где линия, проведенная перед началом углубляясь в Sufficiently Smart Compiler территорию?
Куда должна быть нарисована линия на C и C++ между ложной подачей информации о оптимизации компилятора и при условии, что она знает, что она делает?
EDIT: Jens Gustedt указал, что мое слияние C и C++ не является правильным, поскольку два из ключевых слов имеют семантические различия, а один не существует в стандартном C++. У меня была хорошая ссылка около register
на C++, которую я добавлю, если найду ее ...
Я мало знаю о C, но в C++ 'inline' скорее используется для обхода ODR. – dyp
«Куда должна быть нарисована линия» - я думаю, что это всегда должно быть
с оценкойразобрано. Выберите тот, который дает лучший результат. – 2013-04-12 11:47:25Вы действительно должны отличать C и C++, здесь они не совпадают со всеми тремя ключевыми словами, которые вы упомянули: 'inline' и' register' имеют другую семантику, а 'ограничение' даже не существует в C++. –