전체 글 (68) 썸네일형 리스트형 goto goto문은 지정한 곳으로 코드 실행 위치를 이동시킵니다. 레이블 이름: 이 형식으로 이동할 곳에 레이블을 만들고 goto 레이블 이름; 이렇게 써서 이동시킵니다. int main() { int i = 0; back: if(i < 10) { i++; goto back;//back:으로 이동 } return 0; } typedef typedef를 사용하여 사용자 지정 타입명을 만들 수 있습니다. typedef int Number; typedef int *PInt; typedef int ArInt[5]; Number num = 1; Pint ptr = # ArInt ar = {1, 2, 3, 4, 5}; 또 typedef에 함수 포인터를 사용할 수 있습니다. int ADD(int a, int b) { return a + b; } typedef int (*Calc)(int, int); Calc add = ADD; 함수 포인터 함수 포인터는 말 그대로 함수를 가리키는 포인터입니다. 함수 포인터는 다음과 같이 정의합니다. 리턴 타입 (*함수 포인터 명)(인수); int (*add)(int a, int b); 보다시피 일반 함수 형식에 (*)이 추가된 모습입니다. int ADD(int a, int b) { return a + b; } int main() { int (*add)(int a, int b); add = ADD;//int (*add)(int a, int b) = ADD;로 정의와 동시에 초기화가능합니다. printf("%d\n", add(1, 2)); return 0; } add는 함수가 아니라 함수 포인터라서 정의되자마자 바로 사용할 수 없고 같은 리턴 타입과 인수를 가진 함수 ADD를 대입시켜야 사용할 수 있습니다. .. 열거형 열거형은 변수 타입 중 하나로 다음과 같이 씁니다. enum [(타입 이름)] { (멤버1)[=(값)], (멤버2)[=(값)], (멤버3)[=(값)], ... }[(변수명)]; enum Fruit { APPLE, BANANA, GRAPE }fruit; //Fruit fruit;도 가능 fruit = APPLE;//fruit = Fruit::APPLE;도 가능 이런 식으로 값의 종류가 숫자나 문자가 아닌 여러 멤버를 갖고 있습니다. 이 멤버들은 내부적으로는 숫자(int)로 취급됩니다. 이 멤버들에 =(값)을 하지 않으면 첫 번째 값은 0이 되고 그 뒤로 =(값)을 한 부분 또는 끝까지 1씩 증가합니다. enum Animal { DOG,//0 CAT,//1 PIG = 3,//3 COW//4 }animal; .. #pragma warning #pragma warning은 컴파일러가 경고를 출력하는 방법을 바꿔줍니다. #pragma warning(제어문:경고 번호) once:번호 : 경고를 한 번만 출력합니다. default:번호 : 기본값으로 재설정합니다. disiable:번호 : 경고를 출력하지 않습니다. error:번호 : 경고 대신 에러를 출력합니다. 레벨:번호 : 경고의 레벨을 변경합니다.(1,2,3,4) 경고 번호를 여러 개 써서 #pragma warning(disable:4705 4706) 이렇게 한 번에 여러 개를 동시에 disable 할 수 있고 #pragma warning(disable:4705; once:4706) 이렇게 여러 명령을 한 줄에 처리할 수 있습니다. 그리고 경고 번호가 0~999번까지는 해당 숫자에 4000을.. #pragma once test1.h struct Test1 { int a; int b; }; test2.h #include "test1.h" struct Test2 { Test1 a; }; test3.h #include "test1.h" struct Test3 { Test1 a; char b; }; test.cpp #include "test2.h" #include "test3.h" 이때, test2.h와 test3.h는 공통적으로 test1.h를 포함하고 있는데 test.cpp에서 test2.h와 test3.h를 포함하는 바람에 test1.h이 2개 포함돼 버려 헤더 중복이 됩니다. 즉, Test1가 두 번 정의되어 오류가 납니다. 문제를 해결하기 위해서 test1.h 코드를 다음과 같이 바꿉니다. #ifndef TEST1_.. 미리 정의된 매크로 #define으로 정의하지 않아도 컴파일러에서 미리 정의된 몇 가지의 매크로가 있습니다. 이것들은 #undef할 수 없습니다. __cplusplus : C++로 컴파일할 때 정의됩니다. 그렇지 않을 때는 정의되지 않습니다. #ifdef __cplusplus//C++언어로 컴파일할 때 #endif __DATE__ : 소스가 최후 컴파일 된 때의 날짜(문자열) 2019년 1월 5일 -> Jan 5 2019값이 됩니다. __TIME__ : 소스가 최후 컴파일 된 때의 시간(문자열) 17시 39분 30초 -> 17:39:30값이 됩니다. __FILE__ : 이 매크로가 사용된 위치의 소스 파일 경로와 이름(문자열) __LINE__ : 이 매크로가 사용된 곳의 줄번호(숫자) C:\test\test.cpp 코드 #.. #error #error는 에러를 발생시키고 컴파일러 창에 에러 메시지를 출력해주는 역할을 합니다. #error (메시지)//""없이 씁니다. 이전 1 2 3 4 5 6 ··· 9 다음 3/9