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 *) 캐스팅이 불필요했었는데 말임. ㅋㄷ
시불불어렵내요
2, 3, 4는 C에서도 된다고 합니다
1) 구조체에서 tag 이름을 그냥 바로 type처럼 쓸 수 있다. 이걸 왜 C++가 C언어보다 편한이유로 적었는지 모르겠다 물론 편한건 맞긴한데 저게 왜 C++가 C보다 편한 대표적인 이유에 포함되는지 설명좀부탁드림 더 중요한것도 많을거같은데..
ㅇㅇ(77.245) // 3, 4는 ANSI C 기준에서 안된다는 말이었고(4번은 내가 괄호 적는 걸 깜빡했는데 ㅋㄷ) 2번은 C에서 됨? 안되는 걸로 알고 있는데?
ㅁㅁ(112.144) // 편한 걸 편하다고 적지 그럼 뭐라고 적음... C++이 편한 이유는 C랑 호환되는 문맥 속에서는 저 이유들이 거의 다임. 내가 모르는 다른 게 또 있을 수 있지만. 하지만 C++가 편한 대표적인 이유는 당연히 아니지. C++가 편한 건 객체지향 그리고 STL 같은 언어 지원 때문이니까. 나는 어디까지나 C언어 수준의 문장을 쓰더라도 C++가 C보다 낫다라는 이유를 든 거니깐.
기준이 ansi c(c89) 면 c++ 에서 제일 편한건 // 라인 커멘트인듯...
대충 봐서 댓글 잘못 달았네 프로토타입 드립이라 생각해버림 2번 말이다 C에서 생략 안되는게 맞음
흠... 내가 잘못 알고 있는 줄 알았네 ㅇㅇ '함수 정의'라고 쓰기는 했지만 그래도 사람들이 헷갈릴까봐 괄호로 C랑 비교해 놨지. C에서는 프로토타입 선언만 된다고. ㅇㅇ
그나저나 C언어 문법을 C++로 쓰게 되면 편해지는 또 다른 예가 또 뭐가 더 있을지 모르겠네. 이게 다 인 듯한데... 혹시 아는 게이 있으면 덧글로 추가 좀 해 줘라.
이거도 편해지는 거라고 볼 수 있을지 모르겠는데 #include 할 때 stdio.h를 cstdio 식으로 적어도 되니 한 글자가 줄음 ㅋ
ㅅㅅㅅ님, 말씀 중에 STL 같은 언어란 게 무엇인가요?
http://dblack.tk
커뮤니티 사이트 입니다 많은 이용 부탁 드립니다.