|
질문이 두개인데 1번답은 그렇게 써도 되고, 2번답은 반드시 그렇게 써야 합니다.
일반적으로 C++을 C로 매핑시킬 수 있는데, class는 struct로 매핑할 수 있고, class 내의 멤버변수는 static 변수로, 멤버함수는 static 함수포인터로 매핑할 수 있습니다. 물론, 완전히 똑같지는 않습니다. C++ 언어의 규약상 access가능한 범위가 한정되어 있죠.
그런 의미에서 아래에 쓰신 내용을 C언어로 번역한 거랑 변수의 활용범위(access area) 및 life time을 적어 놓을께여. 근데 제가 괜한 현문우답을 하는 건 아닌지 모르겠네여. -________-;;
typedef struct
{
int a;
} TForm1;
typedef struct
{
int a;
} TForm2;
특정함수 내에서
static TForm1 from1;
static TForm2 from2;
변수 : access : life time : 생성장소 : 정의장소
지역변수 : 함수 내 : 함수 내 : stack : 함수 내
static 지역변수 : 함수 내 : 정의시 생성되어 프로그램 종료시까지 : global heap : 함수 내
전역변수 : 프로그램 전역 : 프로그램 시작부터 프로그램종료시까지 : global heap : 함수 밖
static 전역변수 : 한 파일 내 : 프로그램 시작부터 프로그램 종료시까지 : global heap : 한 파일 내
10년전 기억을 다시 떠올려 적은 것이어서 일부 틀릴 수도 있을 거 같아여.
근데, 대부분 맞을 겁니다.
^____________________^
swapper 님이 쓰신 글 :
: 한폼과 다른 폼의 헤더파일에 public 으로
: 같은 이름의 변수를 선언했습니다.
:
: class from1 : public form1
: {
: public:
: int a;
: };
:
: class from2 : public form2
: {
: public:
: int a;
: };
:
: 이렇게 쓰면 안되나요?
:
: 그리고 이 전역변수를 from3 에서 접근할려면
:
: 꼭 form1->a 라고 해야 하나요? 아님 걍 a 라고 해도 되나요?
:
: -_-a
:
: 그럼 답변 부탁이여
|