2017. 10. 15. 17:24 C++/정보
C++] C와 C++의 구조체(Struct) 차이 / struct와 typedef struct의 차이
[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으로 처리됨
'C++ > 정보' 카테고리의 다른 글
C++] 객체지향 프로그래밍의 기본 (0) | 2017.10.15 |
---|---|
C++] 구조체(struct)와 클래스(class)의 차이 (0) | 2017.10.15 |
C++] C++에서 C의 표준함수 호출 방법 (0) | 2017.10.15 |
C++] 자료형 크기 및 범위 정리 (0) | 2017.04.13 |
C++] htons(), htonl(), ntohs(), ntohl() (0) | 2017.03.31 |