216
2014-08-29 17:33:48
0
생활코딩에서도 비슷한 토픽이 나온 걸 본 기억이 있네요.
네 C에서는 boolean이 없죠. 없으면 있게 만들어 쓰면 됩니다. 그런데 그 방법에 부작용이 많죠. 그래서 쓰지 않는 것이 좋습니다.
if ( expr == true ) 라든가 if ( false == expr) 같은 표현, 저는 좋다고 생각하고 C++ 에서는 자주 사용했습니다. 명확하게 코드에 참 / 거짓이 명시되거든요.
오히려 if ( !expr ) 이 사악해 보이지 않습니까? 저 눈에 잘 보이지도 않는 느낌표 때문에 얼마나 많은 에러가와 버그가 발생했는데요.
물론 이건 코드의 문법적인 서술에 관한 사항이고, 실제로 이 문법에 관해 언어가 기대한 대로 동작이 되어 줘야 의미가 있겠죠. C는 아무리 해도 저런 표현을 쓴다고 했을 때 부작용이 발생할 수 밖에 없고 그것을 피할 수가 없다는 것이 근본적인 문제에요.
typedef 를 이용해 bool을 억지로 만드는 것도 그렇고, 0 혹은 1을 FALSE, TRUE로 치환하여 쓰기만 하는 것도, 그 모든 곳에서 C는 에러의 요소를 남기고 맙니다. 애초에 없는 걸 있는 것처럼 만드려고 하는 게 문제가 된다는 요지이죠?
현재 C를 잘 안 쓰고 있고 C를 쓰려면 불편함을 많이 느끼는 1인이지만 충분히 공감갑니다.