컴파일 에러입니다.. initializer element is not constant
글쓴이: alwaysrainy / 작성시간: 수, 2005/01/05 - 4:05오후
static FILE *display=stdout, /* screen display file */ *opf=stdout; /* current output destination */
위의 코드를 컴파일 하여 보면
Quote:
error: initializer element is not constant
이러한 에러 메시지가 뜨네요.. 무슨 까닭이죠?
#include <stdio.h> extern FILE *stdin; extern FILE *stdout; extern FILE *stderr;
참고로 stdout은 extern으로 선언되어 있습니다.
Quote:
gcc version 3.3.4 (Debian 1:3.3.4-13)
컴파일러를 사용하고 있습니다.
Forums:
static 으로 포인터를 선언하면서 초기화할때 초기값이 consta
static 으로 포인터를 선언하면서 초기화할때
초기값이 constant 가 아닐 경우에
이런 에러가 나오네요...
원인은 저도 잘 모르겠고 아래와 같이 수정하면 에러메시지가 나오지는 않군요.
저도 왜 이런 건지 무척 궁금하네요...
from saibi
생각해보면..
static을 사용하는 의미를 생각해보면요..
static으로 선언하면 무엇보다 먼저 메모리에 잡히게 되는데
컴파일러 입장에서는 stdout의 값이 결정되지 않은상태니까..
당연히 상수를 원하겠죠?
의 경우에는.. display공간을 초기화 하지 않은 상태이고
다음 라인에서 display를 초기화 하는데 이건 static 변수가 잡힌후에 나중에 코드가 수행되는도중이니까 상관없겠죠..
Hyo-Sung Lee(李曉星/Mark Lee)
KRSF Certified Inline Skate Instructor
Fitness Inline Skate Trainer
Mogul&Freeride Skier
IDOne ski rider
Cafe MogulBuddy/KoreaMogul
E-Leader(C) Programmer
C에서는 static 개체의 초기값이 상수식이어야 하기 때문입니다.s
C에서는 static 개체의 초기값이 상수식이어야 하기 때문입니다.
stdin으로 초기화하면서도 static의 의미를 살리려면 편법을 써야겠는데요.
댓글 달기