static사용한것좀 봐주세여..ㅜㅜ

toy의 이미지

static int x = 10 ;
static int x ;
void main()
{
}
---------------------------------------------------
이코드가 VC++에서는 에러가 납니다.
redefinition..이라면서요..

그런데gcc에서는 -ansi -pedantic옵션으로 표준에 맞게
컴파일했는데 아무런 에러도 안납니다.
표준의 입장에서 누가 잘하는것일까요... :oops: :oops: :cry:

익명 사용자의 이미지

-C99 -Wall 붙여보세요.

doldori의 이미지

C 코드라면 gcc가 표준에 맞습니다. 초기치가 지정된 정의가 존재하므로
static int x;
는 정의가 아닌 선언일 뿐입니다. 따라서 redefinition이 아니지요.
C++ 코드라면 VC++이 맞고요.

그보다 다른 곳이 표준에 어긋나는군요. main()의 반환형은 int입니다.

int main(void)
{
    return 0;
}