반응형

[C와 C++의 구조체 차이]


1) typedef 키워드 사용 의무의 차이

:: typedef의 정확한 의미는 "typedef (기존 타입) (새로운 타입 명)" 이다.


(C 언어)

ex1)

struct POINT

{

int x;

int y;

};

 : POINT : 구조체의 태그 포인트. 구조체 명이 아니므로 바로 사용 불가.

=> ex) POINT sPoint; // 컴파일 에러 발생

=> ex) struct POINT sPoint; // 실행 가능


ex2)

typedef struct _tagPOINT

{

int x;

int y;

}POINT;

 : _tagPOINT : 구조체의 태그 포인트. 구조체 명이 아니므로 바로 사용 불가.

 : POINT : 구조체의 타입 명.

=> ex) POINT sPoint; // 실행 가능


(C++)

ex1)

struct POINT

{

int x;

int y;

};

 : POINT : 구조체의 태그 포인트. C++에서는 구조체 타입 명 으로도 인식함..

=> ex) POINT sPoint; // 실행가능


ex2)

typedef struct POINT

{

int x;

int y;

}POINT;

 : POINT : 구조체의 태그 포인트. C++에서는 구조체 타입 명 으로도 인식함..

=> ex) POINT sPoint; // 실행가능

==> C++ 에서는 typedef 키워드를 사용하지 않아도 구조체의 태그명도 타입명으로 인식하기때문에 typedef 키워드를 사용하지 않아도 된다. 그러나, C언어와의 호환성을 위해 사용해주는게 좋다.


==> 아래와 같은 방식으로 사용하면 C/C++ 에서 동일하게 사용 가능하므로 아래와 같은

       형식을 지켜주도록 하자.


typedef struct _tagPOINT

{

int x;

int y;

}POINT;



2) 구조체 내 함수 선언 가능의 차이

(C 언어)

구조체 내 함수 선언 불가


(C++)

구조체 내 함수 선언 가능

구조체 내 함수가 있으면 자동으로 Inline으로 처리됨





반응형
Posted by tislqhf

블로그 이미지
개인적인 공부자료 정리하는 공간
tislqhf

태그목록

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함