1) 구조체에서 tag 이름을 그냥 바로 type처럼 쓸 수 있다.

 (C에서는 struct tagname 으로 앞에 struct를 붙여야지 type처럼 쓸 수 있음)


 하지만 이게 된다고 하더라도 구조체 선언 시 typedef를 쓰는 버릇을 들이는 게 좋음.

 코드를 언제 C로 복붙할 지도 모르니깐.



 2) 함수 정의 시에도 안 쓰는 매개 변수는 과감하게 타입만 적을 수 있음.

 (C에서는 프로토타입 선언 시에만 가능)


 가령 WinMain 형식이 다음과 같은데


 int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { ... }


 나는 저 중에서 hInstance만 써도 된다고 한다면 그냥 이렇게 쓰면 됨.


 int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int) { ... }



 3) 지역 변수 선언 시 함수 본체 아무데나 적어도 선언이 됨.

 (ANSI C에서는 선언 부에서만 가능)


 4) 그리고 for 문의 초기화 식에도 변수 선언이 가능.



--------------------------------------------------------------------


 부록: C++가 C보다 불편한 점


 1) 묵시적 int 가정은 main 함수에서만 가능.


 2) 함수 선언 없이 쓰는 거 안 됨.


 3) 타입이 엄격해서 void * 포인터를 다른 포인터에 캐스팅 없이 대입 불가.

 가령 malloc을 C++에서 쓴다면


 int *ptr = (int *) malloc(...);


 무조건 이런 식으로 써야 됨. C에서는 저 (int *) 캐스팅이 불필요했었는데 말임. ㅋㄷ