2012-05-28 4 views
0

char firstLetter=word[0];을 고려하십시오. firstLetter을 사용하여 아무 것도 읽지 않으므로 설탕으로 사용하십시오. 새로운 메모리를 할당하는 대신 인라인 "별칭"을 만들 수있는 #define 이외의 것이 있습니까? 스크립트가 작성 될 수 있지만 이미 존재하는 것이 있으면 실현할 수 있습니다.설탕 구문에 대한 새 변수 대신 별칭

+0

C++ 또는 C (또는 둘 다)? 대답과 편의는 두 언어에 따라 다릅니다. – delnan

+0

C++ 주로 .. – user1420741

답변

0

, 당신은 항상 객체의 별칭 만들 수 있습니다

char& firstLetter=word[0]; 

word[0]에 대한 firstLetter 및 별칭을 만들 것이다 (word를 가정하는 것은 배열, 그리고 포인터입니다 나중에 변경됩니다).

+0

이것은 내가 찾고 있었던 것이다. 고마워, 보. 이 글을 읽는 사람은 C++ 11의 constexpr에 대해서도 비슷하지만 비슷하지는 않지만 알아 냈습니다. – user1420741

1

여기에 계속되는 메모리 할당은 없습니다. word[0]의 값을 레지스터 나 스택에 복사 할 수 있지만이 작업을 수행해야하는지 여부는 컴파일러의 책임입니다.

"인라인 별칭"을 사용하면 훨씬 더 나쁜 코드가 생성 될 수 있습니다. 표현 word[n]은 일종의 대체를 사용한 경우 여러 번 반복되는 계산을 의미합니다. 문제는 정말 C++에 대한 경우

+0

컴파일러가 공통 하위 표현식 제거를 수행하지 않고 주소를 한 번 계산하지 않는 한. 어느 것이 잘 할 수 있습니다 ('휘발성'과 같은 불쾌한 것을 제외하고). 이것은 효율성의 문제가 아닙니다. – delnan