●로드, PDB 파일을 찾거나 열 수 없습니다. - 비주얼C++에서 디버그를 실행하면 이렇게 나오면서 창이 나오고 바로 꺼진다.


'a.exe': 'ImageAtBase0x200000' 로드, 포함/제외 설정으로 로드가 비활성화되었습니다.

'a.exe': 'ImageAtBase0x200000' 언로드

'a.exe': 'C:\Windows\System32\shunimpl.dll' 로드, PDB 파일을 찾거나 열 수 없습니다.

'a.exe': 'C:\Windows\System32\SortWindows6Compat.dll' 로드, PDB 파일을 찾거나 열 수 없습니다.

'a.exe': 'C:\Windows\System32\imm32.dll' 로드, PDB 파일을 찾거나 열 수 없습니다.

'a.exe': 'C:\Windows\System32\msctf.dll' 로드, PDB 파일을 찾거나 열 수 없습니다.

'a.exe': 'C:\Windows\System32\psapi.dll' 로드, PDB 파일을 찾거나 열 수 없습니다.

'[3700] a.exe: 네이티브' 프로그램이 종료되었습니다(코드: 0 (0x0)).






●main안에 'getchar();" 라는 코드를 넣으면 창이 바로 꺼지는 것을 막다준다..



















Posted by -현's-

댓글을 달아 주세요

  1. Favicon of https://rabeee.tistory.com Rabeee  댓글주소 수정/삭제 댓글쓰기 2015.07.03 14:53 신고

    우와 도움얻고갑니다.
















Posted by -현's-

댓글을 달아 주세요


●sprintf

- 메모리에 출력한다.

- sprintf(문자배열명, "출력문자와 자료형(ex.%d)", 입력 데이터);





●예제

- HelloWorldScene.cpp


#include "HelloWorldScene.h"


using namespace cocos2d;


CCScene* HelloWorld::scene()

{

    CCScene *scene = CCScene::create();

    

    HelloWorld *layer = HelloWorld::create();


    scene->addChild(layer);


    return scene;

}


bool HelloWorld::init()

{

    if ( !CCLayerColor::initWithColor(ccc4(255, 255, 255, 255)) )

    {

        return false;

    }

////////////////////////



//레이블 생성 및 초기화

CCLabelTTF *pLabel=CCLabelTTF::create("score:0", "Thonburi", 30);

//레이블 위치 지정

pLabel->setPosition(ccp(240,180));

//레이블 색 지정

pLabel->setColor(ccc3(0,0,0));

//레이블의 투명도 지정

pLabel->setOpacity(100.0);

//레이어에 레이블 객체 추가

this->addChild(pLabel);


char coinScore[100] = {0};

int score=0;

for(int i=0; i<100;i++){

score++;

sprintf(coinScore, "score: %d",score);

CCLog("score:%d", score);

pLabel->setString(coinScore);

}



    return true;

}











Posted by -현's-

댓글을 달아 주세요

●자기가 만든 프로그램이라도 몇 주만 지나면 다 까먹는다.

딱 정해진 규칙은 없지만 가독성과 프로그램 흐름을 기억 위해 될수 있으면 다음의 규칙을 따르는게 좋다.

 

 

●변수명 작성 규칙

- 변수명은 될 수 있으면 의미를 가진 단어를 사용한다.

- 첫글자는 소문자로 시작한다.

- 상수는 대문자를 사용한다.

- 동사와 명사가 섞인 변수명을 작성할 때는 동사를 먼저 적는다.

- boolean형의 변수는 접두어로 is나 can을 붙인다.

- 반복문 등의 내부에서 사용하는 변수는 i,j,k를 사용한다.

- class전체에 사용되는 class형의 변수는 접두어로 m이나 g를 붙인다.

- 변수명 오른쪽에 그 변수가 무슨 의미인지 주석처리한다.

 

 

●메서드명 작성 규칙

- 하나의 메서드가 길어져 전체를 한 화면에 보기 곤란한 경우 여러개의 메서드로 나누어 하나의 메서드가 30행이상이 되지 않도록 한다.

- 메서드명 위에 그 메서드가 무슨 역할을 하는지 주석에 적어둔다.

- } 가 많이 중첩된 경우 나중에 헤깔림을 방지하기 위해 } 옆에 주석으로 어느 부분 끝인지를 적어둔다.

 

 

Posted by -현's-

댓글을 달아 주세요


●템플릿 함수
- 인수나 반환값의 형을 모호한 상태로 정의하는 함수. 템플릿 함수의 기능을 사용하면, 복수의 형에 대응하느 함수를 만들 수 있다. 컴파일러는 템플릿 함수를 호출하는 부분을 발견하면, 이것들을 구체적인 함수로 만든다.
ex)
template<class T>
T Aaa(T a, T b){               //템플릿 인수(T) 부분에 int형이나 double등 자료형이 치환된다.
   T buf;
   ~~
}
int a=100, b=200, c;
c=Aaa(a, b);               //템플릿 인수가 int로 치환


●템플릿 함수의 이용
- 템플릿 함수를 이용하면 내용은 거의 동일하지만 형이 다른 함수를 하나로 만들 수 있다.




●템플릿 클래스
- 사용하는 형을 모호한 상태로 정의하는 클래스. 템플릿 클래스 기느을 사용하면 복수의 형에 대응하는 클래스를 만들 수 있다.
ex)
template<class T>
class Aaa{
   public:
      ~~
      T Add(){
          return a+b;
      }
      T a, b, c, d;
};




●템플릿 클래스의 오브젝트를 생성할 꼉우, 다음과 같이 사용할 형을 지정.
ex)
Aaa<int> aa;
Aaa<double> aa;



●템플릿 인수가 2개 이상 있을 경우, 다음과 같이 형을 복수로 지정
template<class T1, class T2>
class Aaa{
~~
};

Aaa<int, char> aa;



●표준 템플릿 라이브러리(STL - Standard Template Library)
- 템플릿 클래스를 사용하는 표준 라이브러리


'프로그래밍 > c++' 카테고리의 다른 글

c++ visual c++로 프로젝트 시작하기  (0) 2013.06.11
c++ 폴더안에 있는 헤더파일 include  (0) 2013.05.26
c++ 기본 문법 정리4  (0) 2012.02.17
c++ 기본 문법 정리3  (0) 2012.02.17
c++ 기본 문법 정리2  (0) 2012.02.16
c++ 기본 문법 정리1  (0) 2012.02.16
Posted by -현's-

댓글을 달아 주세요


●new 연산자 - 오브젝트를 동적으로 생성할 때 사용
ex)
A *a;
a=new A;

A *a=new A;



●delete 연산자 - new연산자로 확보한 메모리는 delete연산자로 해체해야한다.
ex)
A *a=new A;
delete a;




●new, delete를 이용해서 int형 등의 메모리 확보, 해체
ex)
int *a=new int;
delete a;

//malloc,free를 쓸경우
int *a=(itn *)malloc(sizeof(int));
free(a);

●malloc()함수보다 new연산자를 사용하는 것이 간단하기 때문에 권장




●new연산자를 이용한 배열용 메모리 확보, 해체
ex)
a=new[10];       //[]안에 숫자 적어야 함
delete []a;        //delete뒤에 '[]'기술해야 함




●참조
- 변수에 별명을 붙이는것. c언어의 포인터와 달리 사용할때 '*' 안 써도 된다. 한쪽을 변경하면 다른 한쪽도 동일하게 변경된다. '&'사용.
ex)
int a;
int &b=a;    //b가 별명이다.
b=10;
cout<<b<<endl;    //b는10 이다
cout<<a<<endl;    //a는10 이다



●함수의 인수로 참조를 사용하기 - 가인수를 참조하면 함수내부에서 실인수를 변경할 수 있다.
ex)
double A(double &a, double &b){
return a+b;
}
double x=1.1 , y=2.2;
double ans=A(x, y);



●인수를 const 형식의 참조로 만들
- 실인수의 값이 변경되면 곤란한 경우 가인수에 onst를 붙인다. 구조체 같은 큰 데이터를 함수에 전달할 때 const형식으로 하면 효과적이다.
ex)
void A(const double &a)
{
~~~
}



●상속 - 이미 존재하는 클래스를 바탕으로 새로운 크랠스를 만드는 것.
클래스명 뒤에 ' :접근제한자 부모클래스명 '을 기술
ex)
class Food{
~~
};
class Fruit :public Food {
~~
};



●자식 클래스의 오브젝트는 부모클래스의 오브젝트에 대입 가능
   부모 클래스의 오브젝트는 자식클래스의 오브젝트에 대입 불가능



●자식 클래스에서 부모 클래스의 멤버함수를 재정의
- 함수명, 인수, 반환값은 동일해야함. 재정의 한쪽의 함수가 호출됨
ex)
class Food{
   public:
      void setP(int a){
      price=a;
      }
   private:
      int price;
};
class Fruit :public Food{
   public:
      void setP(int a){
      Food::setP(a-20);            //자식클래스에서 부모클래스에 있는 같은 이름의 함수를 호출하기 위해서는
      }                                   //스코프연산자(::)를 사용
};



●가상 함수를 재정의 한 것을 오버라이딩이라 한다.




●순수 가상 함수
- 기본 클래스에서 내용을 정의하지 않은 가상함수. 순수가상함수를 포함하는 클래스의 오브젝트는 생성X. 함수 선언 제일 앞에 'virtual'을 쓰고 제일 뒤에 '=0'을 붙인다.
ex)
class Food{
   public:
      virtual void setP(int a)=0;
};

'프로그래밍 > c++' 카테고리의 다른 글

c++ visual c++로 프로젝트 시작하기  (0) 2013.06.11
c++ 폴더안에 있는 헤더파일 include  (0) 2013.05.26
c++ 기본 문법 정리4  (0) 2012.02.17
c++ 기본 문법 정리3  (0) 2012.02.17
c++ 기본 문법 정리2  (0) 2012.02.16
c++ 기본 문법 정리1  (0) 2012.02.16
Posted by -현's-

댓글을 달아 주세요


●c언어에서는 배열사이즈를 정의할 때 상수선언을 #define으로 했지만, c++에서는 const로 할 수 있다.
가능한 const를 사용하는게 좋다
ex)
c언어
 #define B 10             
int main(){
   int b[B];
}

c++
 int main(){
    const int B;
    int b[B];
}




●함수의 디폴트 인수 설정 - 거의 매번 같은 값을 가지지만 가끔씩 변경해야할 경우에 사용하면 편리
ex)
프로토 타입에서 설정
double A( int a=1, double b=3.1);

함수 정의에서 설정
 double A( int a=1, int b=3.1){
  ~~
}



●디폴트 인수 설정된 함수 호출
ex)
double area;
area=A();                //아무 것도 없으면 디폴트인수로 된다
area=A(10);             //첫번째 인수부터 채워진다. 첫번째 인수는 10, 두번째 인수는 디폴트 인수로 된다
area=A(10, 3.11);     //첫번째 두번째 인수는 10, 두번째 인수는 3.11이다



●디폴트 인수 설정시 주의점
- 디폴트 인수는 마지막 인수부터 차례로 설정해야함. 첫번째 인수에만 디폴트 설정하면 컴파일 에러 발생
ex)
double A(int a, int b=1);     //(O)
double B(int a=1, int b);     //(X), 컴파일 에러발생



●오버로딩
- 인수의 형이나 개수가 다르고 동일한 이름의 함수를 여러개 정의한것.
단, 반환형의 형만 다른 함수는 오버로딩할 수 없다.




●표준 출력 스트림 - std::cout
ex)
#include <iostream>
int a;
std::cout<<"Hello"<<"World"<<a<<std:endl;



●표준 입력 스트립 - std::cin
ex)
#include <iostream>
int a;
std::cin>>a;




●스코프 연산자('::')
- 로컬 변수와 클로벌 변수의 이름이 같을 경우 함수안에서는 로컬변수가 우선하지만
스코프연산자를 사용하면 글로벌 변수를 우선시킬 수 있다.
스코프연산자 앞에 클래스명을 붙이면 오브젝트 내의 멤버를 우선시킬 수 있다.
ex)
::a
A::a




●namespace(이름공간)
- namespace 내의 변수와 함수를 이용하기 위해서는 ' namespace명::함수명이나변수명이나클래스명'을 기술한다.
매번 'namespace::'라고 기술하는 것이 번거롭기 때문에 'using namespace 이름공간명;"을 기술하면 편하다


●namespace std
- std::cout나 std::cin은 std라는 이름공간에 있기 때문에 'using namespace std;'를 기술하면 그냥 cout, cin써도 된다.



●인라인 함수
- 함수에 'inline' 붙이면 컴파일러는 호출하는 곳으로 함수의 정의를 복사해서 넣는다. 인수를 복사하거나 함수를 호출하는 처리가 생략되므로 실행속가 빨라진다. 그러나 코드가 중복되는 만큼 프로그램의 사이즈는 커지기 때문에 모조건 인라인 함수가 좋은 것은 아니다. 주로 처리 내용이 작은 함수나 호출 횟수가 많은 함수를 인라인으로 하면 좋다.
ex)
inline int A(int a, int b){
   return a+b;
}


'프로그래밍 > c++' 카테고리의 다른 글

c++ visual c++로 프로젝트 시작하기  (0) 2013.06.11
c++ 폴더안에 있는 헤더파일 include  (0) 2013.05.26
c++ 기본 문법 정리4  (0) 2012.02.17
c++ 기본 문법 정리3  (0) 2012.02.17
c++ 기본 문법 정리2  (0) 2012.02.16
c++ 기본 문법 정리1  (0) 2012.02.16
Posted by -현's-

댓글을 달아 주세요


 warning C4700: local variable '.identifier' used without having been initialized
-경고 원인
.identifier 의 변수에 대해서 초기화 값을 지정하지 않고 사용하는 경우에 발생

-경고 해결
변수를 초기화 하지 않고 사용하는 것은 프로그램상에서 위험하므로 초기값을 지정해 주는 습관을 들이는게 좋다.





 warning C4001: '.identifier' : unreferenced local variable
-경고 원인
선언한 변수가 사용되지 않는 경우에 나오는 경고이다.




 warning C4244: 'conversion' conversion from 'type1' to 'type2', possible loss of data
-경고 원인
정수나 실수 등 자료형이 맞지 않은 경우 발생

-경고 해결
변수의 사용을 정수나 실수형에 알맞게 선언하고 사용





 warning C4130: '==' : logical operation on address of string constant
-경고 원인
'=='에서 비교하는 값의 종류 같지 않을 경우 발생




 warning C4715 : 'function' : not all control paths return a value
-경고 원인
예를 들어
int fun(int i){
   if(i>=0){
   return 0
  }
}
이라는 함수에서 i가 0보다 작은 값이 들어오면 return하지 않기 때문에 프로그램상에서 버그가 날수 있다.


-경고 해결
if문 밑에 else문을 만들어 모든 가능한 경로에 return 값을 넣어 주면 된다.




 warning C4307 'operator' : integral constant overflow
-경고 원인
예를 들어 int형의 최대값은 2,147,483,647 인데 여기에 30억이라는 값이 들어가게 되면 경고가 발생한다














'프로그래밍 > c언어' 카테고리의 다른 글

c언어 파일 입출력  (0) 2012.03.28
c언어 경고(warning)  (0) 2012.02.08
c언어 에러(error)  (0) 2012.02.08
c언어 디버그 기법  (0) 2012.02.07
c언어 텍스트 파일의 내용을 거꾸로 표시하는 프로그램 소스  (0) 2012.02.07
c언어 기본 문법 정리4  (0) 2012.02.04
Posted by -현's-

댓글을 달아 주세요



 error C2228: left of '.identifier' must have class/struct/union type
-에러 원인
class나 struct, union으로 선언한 변수를 사용하는 경우에 '.identitier'부분이 class, struct, union 에서 정의한 변수명이 아닌경우, 혹은 포인터를 사용하면서  '->'아니라 '.'으로 사용한 경우에 이런 에러가 발생

-에러 해결
class, struct, union 에서 선언한 변수명과 맞는ㄴ지 체크하고 포인터를 사용하는 경우 '.'이 아니라 '->'로 접근





 error C2143: syntax error : missing ';' before 'if'
-발생 원인
if문 이전에 ';'이 빠진 경우에 발생

-에러 해결
명령어가 끝나는 곳에 ';'를 붙여준다




 error C2065: '.identifier' : undeclared identifier
- 에러 원인
.identifier가 선언되지 않고 사용되는 경우에 발생

- 에러 해결
.identifier 부분 스펠링 확인, 대소문자 확인, 헤더파일이 정확히 include되었는지 확인





 error C2106: '=' left operand must be 1-value
-에러 원인
a=b의 경우에서 a족에 b의 값을 넣을 수 없는 경우에 발생





 error LNK2001: unresolved external symbol _main
 error LNK1120: 1 unresolved externals
-에러 원인
main부분을 찾을 수 없는 경우에 발생




 error C1010: unexpected end of file while looking for precompiled header directive
-에러 원인
비주얼c에서 precompiled header를 '*.c' 혹은 '*.cpp'파일에 include하지 않은 경우에 발생

-에러 해결
소스파일에 #include "stdafx.h" 추가
Project-setting0c/c++  tab Project Option text bok 에서 /Yu"stdafx.h"부분을 찾아 삭제




 error C2143: syntax error : missing ';' before '}'
 error C1004: unexpected end of file found
-에러 원인
{ 와 } 쌍이 맞지 않는 경우에 발생
C2143 에러의 경우 } 의 개수가 { 의 개수보다 많은 경우
C1004 에러의 경우 { 의 개수가 } 의 개수보다 많은 경우

-에러 해결
{ 와 } 의 개수를 맞게 조정








'프로그래밍 > c언어' 카테고리의 다른 글

c언어 파일 입출력  (0) 2012.03.28
c언어 경고(warning)  (0) 2012.02.08
c언어 에러(error)  (0) 2012.02.08
c언어 디버그 기법  (0) 2012.02.07
c언어 텍스트 파일의 내용을 거꾸로 표시하는 프로그램 소스  (0) 2012.02.07
c언어 기본 문법 정리4  (0) 2012.02.04
Posted by -현's-

댓글을 달아 주세요


●연산에서 조건이 true면 1을 반환, false면 0을 반환



●sizeof 연산자 - 변수나 자료형이 메모리를 점유하는 크기를 바이트 단위로 구함
ex)
int n,m;
n=sizeof(int);
m=sizeof(n);



●문자열 선언 - 배열 이용
ex)
char a[]="Hello";
char a[6]="hello";



●문자열은을 복수 문자의 집합으로 이것을 담아두기 위해서 배열을 이용한다



●문자열 함수 - 프로그램 첫머리에 #include <string.h> 써야함
- strlen() - 문자열 길이 반환
ex)
char s[]="abc";
int a;
a = strlen(s);

- strcpy() - 문자열을 복사
ex)
char s[6];
strcpy(s, "abc");

- strcat() - 문자열 결합
ex)
char a[6]="abc";
char b[]="de";
strcat(a, b);



●동적 메모리 할당 - #include<memory.h>, #include<malloc.h>, #include<stdlib.h> 써야함
ex)
①메모리 확보
short *buf;
buf=(short *)malloc(sizeof(short)*2000);   //malloc함수의 반환값은 형이 없기때문에
                                                         //buf와 같은 형으로 캐스팅한다

②메모리 이용 - 일반적인 배열처럼 사용
ex)
buf[2] = 10;

③메모리 해제
ex)
free(buf);




●파일 다루기
①파일을 연다
②읽고 쓰기 수행
③파일을 닫는다



●파일 열기 - fopen() 함수 이용
ex)
FILE *fp;
fp = fopen("파일명", "r");      //r - 읽기전용, w - 쓰기전용, a - 수가해서 쓰기


●파일 닫기 - fclose() 함수 이용
ex)
fclose(fp);



●파일 읽기 - fgets() 함수이용, 행바꿈 코드까지 읽거나 지정된 최대문자만큼 읽음
ex)
char s[10];
FILE *fp;
fp=fopen("a.txt", "r");
fgets(s, 9, fp);          //(값을 저장할 배열, 읽어올 문자수, 파일포인터);
fclose(fp);




●파일 끝가지 읽기 - feof()함수 이용, feof()는 파일포인터의 위치가 패일의 맨 끝이면 참이 되는 함수
ex)
while(1)
{
fgets(s, 9, fp);
if(feof(fp))
break;
}


●파일을 열지 못하면 파일포인터(fp)는 null값이 된다



●파일 작성 - fputs() 함수 이용, fprintf()함수 이용
ex)
FILE *fp;
fp=fopen("a.txt", "w");
fputs("기록할 문자열\n", fp);
int a=5;
fprintf(fp, "%d\n", a);



●난수 만들기 - rand(), srand() 함수 이용, #include<stdlib.h>필요















Posted by -현's-

댓글을 달아 주세요