C 에서 Enum 의 크기는 컴파일러에 따라 변할 수 있다.


Debug 빌드에서는 4바이트로 빌드가 되는데 Release 빌드에서는 1바이트로 빌드가 되는 현상이다.


해결 방법은 Enum 의 크기를 미리 조절 해 주는 것이다.


ex)

enum testEnum1
{
VAL_1 = 0,
VAL_2,
VAL_3
}

enum testEnum2
{
VAL_1 = 0,
VAL_2,
VAL_3,
EOE = 0xffffff;
}

testEnum1 의 경우 1바이트로 컴파일이 되는 경우가 발생하나 

testEnum2 의 경우 마지막에 사용하지 않는 값을 이용해서 4바이트로 크기를 변환 한 것이다.




Posted by 후미카
:

int* 와 char* 차이점


int형 포인터 변수와 char형 포인터 변수 모두 4바이트(혹은 64비트 OS 에서는 8바이트) 로 동일하다.


하지만 두 포인터 변수의 차이는 포인터 연산에서 차이가 있다.


int형 포인터 변수의 경우 +1 을 할 경우 주소값이 4바이트씩(int 형의 바이트 크기 만큼) 이동을 하게 되며


char형 포인터 변수의 경우 +1을 할 경우 주소값이 1바이트씩 이동을 하게된다.


ex) 

 int a[10];

 char b[10];


위와 같은 배열이 있을 경우

 a+4 는 &a[4] 와 동일하며 b+2 는 &b[2]  와 동일하다.



int a[10];
char b[10];

*(a+4) = 100;
*(b+2) = 20;

printf("===> %d, %d", a[4], b[2]);


위 코드의 실행 결과는 아래 와 같다.




  
===> 100, 20


Posted by 후미카
:

Native 에서 크래시 날 경우 크래시 난 위치를 확인 할 수 있다.


1. NDK_ROOT/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin 폴더를 환경변수 PATH에 추가

2. 터미널에서 에러가 발생한 .so 파일이 있는 위치로 이동한다.

3. addr2line -C -f -e 파일명 주소   를 입력 해 주면 크래시가 난 소스 파일명과 함수명, 라인 넘버가 나온다.



3번에서 사용된 파일명과 주소는 로그캣을 찹조 하면 확인 할 수 있다.

DEBUG        #00 pc 0123abcd    /data/data/com.example.test/lob/libcocos2dcpp.so    

(주소)                                                                    (파일명)




Posted by 후미카
:

extern "c" 부분에서 아래와 같은 에러가 발생 할 수 있다.


language string '"c"' not recognized


이 경우 c 를 소문자가 아닌 대문자로 적어 주면 해결 된다.

Posted by 후미카
:

error C2243: '형식 캐스팅' : ....(으)로의 변환이 있지만 액세스할 수 없습니다.


에러메세지는 클래스 상속에서 발생.


class B : A
{
    ...
};

위와 같이 클래스명으로만 상속을 받게 되면 생기는 에러 메세지 이다.



class B : public A
{
    ...
};

위와 같은 형태로 상속받아야 한다.

Posted by 후미카
:

error C2360: 'value' 초기화가 'case' 레이블에 의해 생략되었습니다.


case 문 내에서 선언된 로컬변수 때문에 발생하는 오류이다.

할당된 영역이 실행 로직에 따라 가변적이므로 컴파일 시 스택 영역의 크기를 알 수 없기 떄문에 발생하는 오류.


해결방법 :


case 문 내에서 선언 및 초기화를 할 때애는 {} 를 사용하면된다.




switch(type)
{
case A:
	{
		int i = 0;
	}
	break;
}


Posted by 후미카
:

XP에서 Visual C++ Intelisence를 사용 할 수 없는 경우가 있다.


이때는 http://msdn.microsoft.com/ko-kr/library/ks1ka3t6.aspx 에서 설정을 확인 해 보고 문제가 없다면 


http://support.microsoft.com/kb/2526044/ko 이곳에서 핫픽스를 적용 하면 된다.


핫픽스는 Microsoft Visual Studio 2010 서비스 팩 1 (SP1) 이 설치 되어 있어야 한다.


핫픽스 다운로드

http://support.microsoft.com/kb/2526044/ko



Posted by 후미카
:

카테고리

전체보기 (102)
Development (102)
iOS (15)
Android (24)
Java (5)
Unity3d (27)
Photon (1)
C# (1)
C++ (7)
cocos2d-x (14)
etc (8)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

달력

«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

글 보관함