본문 바로가기

Programming/C,C++

(7)
extern "C" C++ 과 C 등 언어를 혼용해 사용할 경우 이부분은 C로 컴파일하라고 지정해 주는 키워드. extern "C" int sum(int a, int b){ return a+b; }
Visual Studio 2008 에서 win32 Application 배포 1. Multi-threaded DLL -> Multi-threaded로 변경하기 (/MD -> /MT) > 프로젝트 속성 중 C/C++ -> Code Genertion -> Runtime Library 부분에서 변경하면 됩니다. 2. Manifest File생성하지 않기. > Linker -> Generate Manifest에서 Yes를 No로 바꿔주시면 됩니다. 3. Embed Manifest 설정 해지 > Manifest Tool -> Embed Manifest에서 Yes를 No로 변경하시면 됩니다. 원본 ) http://ucandream.tistory.com/45
C 언어에서 random값 random값을 가져오는 함수는 stdlib.h 안에 있는 rand() 함수이다. 0부터 RAND_MAX 까지의 값중에 하나를 return 한다고 한다. 이 함수만으로 프로그램을 만들게 되면 항상 같은 random값이 나오게 된다. random 값이 저장되어있는 곳에서 하나씩 차례대로 가져오는 함수가 rand() 함수이다. srand() 함수는 seed라는 값으로 random값이 저장되어있는 곳의 시작위치를 지정할수 있다. srand() 함수를 사용해도 seed값이 항상 같으면 같은 random값이 나오게 된다. srand((unsigned int)time(NULL)); 이렇게 사용하므로써 실행되는 시간에 따라 seed값을 바꿔주면 항상 다른 random 값이 나오게 된다. srand() 를 사용하려면...
[C] 함수와 배열 그리고 포인터 - 1부 배열을 사용하다가 함수에 넣을때가 있다. 이부분에서 부터 문제가 생긴다. 도대체 어쩌란 말인가~~~ int ABC = {1,2,3}; printf("sum : %d\n",sum(ABC)); 이게 원하는 코드이다. 함수부분을 보면 다음과 같이 사용하면 된다. int sum(int data[]) 또는 int sum(int *data) 이렇게 하면 된다. 물론 차이는 있다. data[] 이렇게 쓰면 값복사를 하는것이다. 함수안에서 data라는 배열이 새로 생기는 것이다. *data 포인터로 사용하면 배열의 주소만 넘겨 받는다. 그러므로 함수안에서 배열의 값을 변경할수 있다. 여기까지는 간단하게 1차원 배열을 넘기는 방법을 설명한거고 2차원 배열을 넘기는 방법은 조금더 복잡하다. int sum(int dataA..
Visual Studio 2005 or 2008 에서 C의 사용법 기본 사용법은 C++ 사용법과 같다. 틀린점이라면 소스파일의 확장자를 cpp가 아닌 c로 하는것이다. 혹시나 해서 확장자를 cpp, c 두가지를 같은 소스로 테스트해보았습니다. [테스트 소스] #include struct Person{ int height; int weight; }; int main(){ Person a; return 1; } [확장자 cpp의 빌드 결과] [확장자 c의 빌드 결과] 오류의 원인은 C에서는 구조체를 사용할때 struct Person a; 라는 방법으로 사용해야하며 cpp 는 Person a; 라고 사용한다. [수정후 확장자 c의 빌드 결과] 결론은 확장자에 따라서 C로 컴파일되고 C++로 컴파일된다는 것이다.
콘솔에서 잠시 멈추기 비주얼스튜디오6 에서는 실행하고 나서 끝날때 잠시 멈추는거 같았는데... 비주얼스튜디오2005 에서는 그런게 없어진거 같다; 그냥 바로 창이 닫혀버린다;; 그래서 찾아본 결과 이런 방법이 있었다; #include 이건 필히 추가해놓아야 한다 system("pause"); 이부분이 잠시 멈추는 부분이다; 위에 나온걸 이용하게 되면 다음과 같은 글이 나오면서 잠시 멈추게 된다 "계속하려면 아무키나 누르세요...."
'scanf'이(가) deprecated로 선언되었습니다. 비주얼 스튜디오 2005 이상을 사용할때 scanf 같은 함수를 사용할때 지정된 범위의 메모리 영역을 오버해서 위험하다 어쩌다 뭐 그런 내용이라는... 무시하고 그냥 scanf를 써도 되고 아니면 scanf_s 함수를 사용해도 된다고 한다. [MSDN] int scanf_s(const char *format [,argument]...); [Example] scanf_s("%d %d", &kor, &eng);