2012-05-28 1 views
0

Рассмотрите char firstLetter=word[0];, где вы ничего не делаете с firstLetter, кроме того, используйте его как сахар для удобочитаемости. Есть ли что-то отличное от #define, которое может просто сделать встроенный псевдоним вместо выделения новой памяти? Я понимаю, скрипт может быть написан, но если что-то уже существует ...Псевдоним вместо новой переменной для синтаксиса сахара

+0

C++ или C (или оба)? Ответ (и его удобство) различается между двумя языками. – delnan

+0

C++ в первую очередь .. – user1420741

ответ

0

Если вопрос действительно является о C++, вы всегда можете создать псевдоним для объекта:

char& firstLetter=word[0]; 

Это сделает firstLetter и псевдоним для word[0] (предполагая, что word является массивом, а не указатель это будет изменено позже).

+0

Это то, что я искал. Спасибо, Бо. Для тех, кто читает это, я также узнал о constexpr в C++ 11 для подобных, но не идентичных целей. – user1420741

1

Здесь нет выделения памяти; значение word[0] может быть скопировано в регистр или в стек, но это зависит от компилятора, нужно ли это делать.

Обратите внимание, что «встроенный псевдоним» приведет к значительному ухудшению кода; выражение word[n] предполагает некоторое вычисление, которое, если вы использовали какую-то подстановку, повторялось несколько раз.

+0

Ну, если компилятор не выполняет общее исключение суб-выражения и вычисляет адрес один раз. Это может быть очень хорошо (за исключением неприятных вещей, таких как «volatile»). Это не вопрос эффективности. – delnan

 Смежные вопросы

  • Нет связанных вопросов^_^