오늘 과제를 열심히 하다가 다른 소스에서는 잘 되는데 내가 만든 소스에서는 계속 컴파일 에러가 나는 구문이 있었습니다.

void function( char *path )
{
static char *full = path;
}

어떤 함수에 스태틱 캐릭터 포인터가 있고 함수의 인자로 오는 캐릭터 포인저의 값을 저장하는 구문인데요..

"initializer is not a constant"

위와 같은 에러 메시지가 뜨더군요.. 에러문을 해석하면 스태틱 포인터에 초기화될때 들어가는 값이 상수가 아니라서 안된

다..이런 의미인데 이런 문법적 제약이 있는것은 아닌것으로 알고 있는데다가 다른 소스에서는 컴파일이 잘되니 도무지 알 수
없는 노릇이라 인터넷을 뒤저 보았습니다. 다른 사람들도 저와 같은 현상이 일어나는 것을 알고 있었는데,

static char *full = path;
위의 코드를 아래와 같이 수정하면 되는 것입니다.
static char *full = path;
full = path;
어처구니가 없었습니다.

곰곰히 생각해 본결과, 다른 원인은 모르겠고 컴파일이 잘 되는 소스는 cpp파일이었고, 컴파일에러를 출력하는 소스는 c파일

이었습니다.

이상한 C컴파일러입니다....






혹시 다른 이유를 아시는 분 알려 주세요^^


신고
by danguria 2009.01.13 20:26
| 1 |

티스토리 툴바