Tuesday, September 1, 2009

tcc cgi, 그리고 몇가지 C trick에 대한 답입니다.

생각난 김에,
Tiny C Compiler로 cgi를 돌려보았습니다.

체감속도는,
perl 보다 빠른 듯했습니다.


----

if ( blah(), 5) {
//do something
}


blah();
if (5) {
// do something
}
와같습니다.


++i와 i++은 c에서는 퍼포먼스(연산속도)는 같습니다.
단, c++에서는 ++i가 더 좋습니다.

왜냐하면 c++에서는 ++연산자를 다음과 같이 operator overloading하기 때문입니다.
(정수의 경우)
// Prefix
Integer& Integer::operator++()
{
*this += 1;
return *this;
}

// Postfix
const Integer Integer::operator++(int)
{
Integer oldValue = *this;
++(*this);
return oldValue;
}


a[5] == 5[a] 는 true입니다.
왜냐하면

*(a + 5)와 *(5 + a)는 같기 때문입니다.
이렇게 연산하는 이유는 c가 디자인된 70년대 64k면 많은 메모리였던 당시,
많은 syntax checking을 할 수 없었기 때문에 무조건 *(a + 5)로 변환했기 때문입니다.
더불어
"ABCD"[2] == 2["ABCD"] 역시 true이고,
모두 'C' 를 나타냅니다.

----

그리고 최근(2009/8/27) boost c++ library 1.40이 발표되었습니다.
http://www.boost.org/
gcc 4.4를 지원한다고 하는데, 저는 아직 3.4.5를 사용하고 있습니다.
살며시 버전을 올리는 것도 생각해 봐야겠습니다.


#어느 곳에서는 operator overriding이라고도 하는군요.
#나는 redefinition 플러스 operand에 따라 동작을 추가할 수 있으므로 overloading쪽에 한표.

No comments: