Visual studio 2015의 컴파일러에 관한 질문입니다


#1

이상하게 xCode나 리눅스에서 잘 돌아가는 코드가 VS2015에서 컴파일이 안되는 경우가 있습니다.

클래스 외부에 배열을 선언하는 경우인데요 …
예전에도 이러한 문제가 있어서 vector로 선언하고 사용했었는데.
이게 컴파일러가 달라서 생기는 문제인가요? 아님 제가 뭘 놓치고 있는걸까요 ?

코드는 대충 이러합니다…

.h파일

class ClassName{
    public:
        ClassName();
        ~ClassName();


}

.cpp파일

#include "ClassName.h"

int array[10] = {
    1, 2, 3, 4, 5,
    6, 7, 8, 9, 10,
};        // 여기서 에러가 납니다...

ClassName::ClassName(){
    // constructor
}

ClassName::~ClassName(){
}

//.. 기타 메소드들 구현

#2

const를 앞에 붙여주시면 안되나요?


#3

아… 관련 내용은 어딘가서 본거 같은데 좀있다 한번 시도해보겠습니다.


#4

cpp code에 집어넣고, 헤더에서는 게터 혹은 세터를 이용하면 해결될 것 같습니다. 헤더파일에 전역변수를 사용하는 것은 문제가 꽤 있더라구요.

혹은 cpp에 집어넣고, 헤더에는 extern int array[10];으로 해도 되지 않을까 싶습니다.

하지만 역시 게터 및 세터를 추가해주는게 제일 좋을 것 같네요


#5

그런게 왜 xcode에서는 문제가 없는걸까요 ㅠ VS가 좀 더 까다롭게 구는 경우일려나요 ?


#6

컴파일러의 차이겠지요.

시스템별 컴파일러가 다르다보니 세세한 것에 대하여 다르게 동작하는 경우는 많네요.

또한 더욱 안전하게 동작을 원하는 곳일수록 그런 것에 대해 더 깐깐하게 굴기는 합니다. 임베디드 시스템에서는 특히 그렇고요