[완료] 구조체 함수 초보 질문입니다.
글쓴이: jos77 / 작성시간: 화, 2009/02/03 - 9:02오후
초보 질문입니다.
제가 다른 환경에서 c 를 통해 구조체 함수를 사용할 때 (windows , embeded , turbo-c 기타)
typedef struct ABC
{
int x;
int y;
int z;
void plus() {
z = x + y;
}
};
void main()
{
ABC He;
He.x=30;
He.y=10;
He.plus();
printf("%d\n",He.z);
}
위와 같이 코딩이 되었었는데... 리눅스에서는 안 되는 것 같네요
리눅스에서는 구조체 멤버 함수 쓰려면
typedef struct ABC()
{
...
void (*plus)()
}
void plus()
{
...
}
이렇게 구조체 멤버함수를 포인터로 선언해서 쓰는 걸로 보이는 데, 이 방법 밖에 없나요?
외부에 함수를 포인터로 가리키는 것 뿐이라면 사실 멤버라는 의미가 거의 없는 거나 다름없는데
(다른 글 검색해보니 기술적으로 C++ 처럼 쓰시는 분들은 계시더군요)
근데 맨 위 방식이 원래 되던 걸로 아는데 --a;;; 안 되는 건가요?
Forums:
'구조체 함수'라는 건
'구조체 함수'라는 건 존재하지 않습니다.
C의 구조체는 함수를 멤버로 가질수 없습니다.
두번째방법도 잘못된 방법으로, 별도로 함수를 선언한후, 구조체의 객체를 만들고, 객체의 함수포인터에 만들어둔 함수를 대입해줘야 합니다.
제가 보기엔...
라고 생각하고 있지만
사실은 다른 환경에서 쓰던 그것들이
C컴파일러가 아니라 C++컴파일러였을 것이라고 생각되는군요.
아마 visual c++에서
아마 visual c++에서 사용한듯 싶은 소스군요.
결국 C++ 일거라고 생각됩니다.
아래와 같이 하면 됩니다.
아래 글타래를 참고 하세요.
http://kldp.org/node/58392
-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
댓글 달기