구조체 멤버중..
글쓴이: harisoo / 작성시간: 목, 2006/04/20 - 3:55오후
왜 c에서는 구조체 내에서 static변수를 선언하지 못하는걸까요?
(굳이 구조체 내에서 정적변수를 선언할 필요는 없지만)
컴파일 자체에서 에러가 걸리는군요.
두번째로 c에서 걸리던 정적변수가 c++로 컴파일시에는 컴파일이 되더군요.
그러나 구조체내의 정적변수에 접근을 할수가 없네요.
gdb로 해당 구조체의 내용을 보면 optimized out(최적화 실패??)이라 나오는데
고수님들 가르쳐 주세요.....
#include
typedef struct
{
int a;
static int b;
}test;
int main(void)
{
test aa;
printf("test in %d\n",aa.a);
return 0;
}
Forums:
초기화를 해야 합니다.
C 언어에서는 문법 오류 입니다.
struct 안의 자료형 선언에 static 이 올수 없습니다.
C++에서는 class의 한종류 이기때문에 사용가능하며
static 변수들은 초기화를 해야 합니다.
테스트는 다음 환경에서 했습니다.
g++ (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)
Optimized out이란 건
Optimized out이란 건 최적화 과정에서 제거되었다는 뜻으로 생각되는데요. 위의 코드에서도 static 멤버 변수는 사용하지 않으셨네요.
댓글 달기