본문 바로가기

VisualStudio.C++.C#/C . C++   ( 28 )


C++ template (템플릿), 변수, 함수, 클래스 템플릿. 제네릭 타입. 개요. C++ template C++ template C++ 언어의 기본 요소. 클래스, 함수, 변수가 제네릭타입 (Generic Type) 으로 동작하게 하는것. - 클래스 템플릿 : 클래의 멤버변수를 template 로 선언했다는 의미. - 함수 템플릿 : 함수의 인자, 반환값을 template 으로 선언 했다는 의미. - 변수 템플릿 : 변수를 template 로 선언했다는 의미. 제네릭타입으로 선언된 것이 실제 사용될 자료형으로 되는것은 컴파일 시점에 이뤄진다. 즉, 컴파일러가 코드에서 사용된 특정 자료형별로 지가 알아서 추가 코드 작성해주는 것. 유용성. 자료형이 달라진 것은 추가 코드 작성하지 않아도 된다. 연산자오버로딩,다중상속시 간편하다. 추가정보. 1. 위키백과 : 템플릿(C++) tem.. 2020. 9. 15.
C/C++. 실수 , 올림 내림 반올림 , ceil floor round #include // for c #include // for c++ ceil(2.8); // 반환값 3 floor(2.8); // 반환값 2 round(2.8); // 반환값 3 . C++ 11 부터 지원됨. round(2.4); // 반환값 2 ceil(-2.8); // 반환값 -2 floor(-2.8); 반환값 -3 round(-2.8); // 반환값 -3 . C++ 11 부터 지원됨. round(-2.4); // 반환값 -2 round - nearest integer value std::round, std::roundf, std::roundl, std::lround, std::lroundf, std::lroundl, std::llround, std::llroundf - cppreference.com.. 2020. 5. 26.
C++. std::map . 키-값 컬렉션 #include /// 선언 std::map my_map_i_str; /// 요소추가 예. 키=3, 값 igotit my_map_i_str[3] = std::string("igotit"); /// 요소추가 my_map_i_str.insert(std::pair(3,std::string("igotit"))); /// 요소제거 my_map_i_str.erase(3); // 요소 모두제거 my_map_i_str.clear(); /// 요소받기 std::string my_str = my_map_i_str[3]; std::string my_str = my_map_i_str.at(3); /// 요소수량 받기. my_map_i_str.size(); /// 비어있나 점검. my_map_i_str.empty(); // 요.. 2020. 4. 1.
C/C++. 윈도우. 파일 저장, 읽기 . FILE . fopen, fprintf, fscanf 파일 저장하기 void save_file() { FILE* fp; float mydata[100]; fp = fopen("test.txt","w"); // 파일열었음.인자1 파일명. 인자2 w 의미 기록용도. for (int idx = 0; idx < 100; idx++) { fprintf(fp, "%f\n", mydata[idx]); } fclose(fp); } 파일 읽기 void read_file() { FILE* fp; float mydata[100]; fp = fopen("test.txt","r"); // 파일열었음.인자1 파일명. 인자2 r 의미 읽기용도. for (int idx = 0; idx < 100; idx++) { fscanf(fp, "%f\n", &mydata[idx]); } fclo.. 2020. 3. 29.
C++ REST SDK. Json 형식 다루기 . 개요 C++ REST SDK 기반 Json 형식 만들기, Json 형식 데이터 에서 데이터 요소(키-값) 추출하기. Json 형식 만들기 object 를 바로 json value 형식으로 변환. #include // need for json // Json 형식 {"op":"ping"} 만들기. 키-값 1개만 있는 초간단. 아래처럼 하면됨. web::json::value obj = web::json::value::object(); obj[U("op")] = web::json::value::string(U("ping")); std::wcout wstring형변환. s 2020. 3. 22.
C/C++. C 에서 C++ 함수 호출하기. extern "C" 선언. C++ 에서 C함수 호출. C 에서 C++ 함수 호출 C와 C++ 이 혼재된 프로젝트에서 C++ 에서 정의된 함수를 C 에서 호출하는 방법. C++ 측에 C에 노출시킬 함수에 extern "C" 선언 추가된것은 C에서 호출가능함. /// C++ mycpp.cpp 측 코드. void function(void) { } //상기 함수를 C측에 노출시키는 함수 추가 작성. extern "C" void c_function(void) { function(); } // C++측 헤더 파일 mycpp.h 에는 위 함수 선언 추가하지 않는다. // extern "C" void c_function(void); 2020. 1. 24.
C. C++. 메모리 직접 접근 메모리 주소 ( 예. 0xF000F100 등 아무거나 시스템에서 메모리 주소로 사용하고 있는 것 ) 에 직접 접근하여 값 uint32_t 값 기록하는 방법. 임베디드 시스템 이라면 메모리 주소는 GPIO 포트 출력 설정하는 레지스터 주소일수도있고, 플레시 메모리 영역일수도 있다. // 코드 의미. 주소에 해당하는 숫자를 uint32_t 포인터로 처리하고 그것의 값 * 에 0xFF 대입하라. // volatile 은 컴파일러 (특히 GCC) 의 최적화 옵션 적용하지 말라는 설정. 코드에 기록된 그대로 컴파일 하라는 의미. *((volatile uint32_t *) 0xF000F100 ) = 0xFF; // 매번 위 구문 타이핑 하기 번거로우니 매크로로 정의하면 사용하기 편리하다. #define MEM_LE.. 2020. 1. 20.
C/C++. & 와 * 메모리 접근 형변환 uint32_t ui32 = 26584; uint8_t ui8[4]; ////32비트 정수 ui32 를 8비트 정수배열에 배치하기. uint8_t * pui8 = (uint8_t*)&ui32; // ui32 의 주소를 uint8_t 포인터 형으로 받고. ui8[0] = *(pui8+0); ui8[1] = *(pui8+1); ui8[2] = *(pui8+2); ui8[3] = *(pui8+3); ///// ui8[0],[1],[2],[3] 개별적으로 분리된 것을 다시 32비트 정수 1개로 변환하기. //// ui8[0] + 2^8*ui8[1] + 2^16*ui8[2] + 2^24*ui8[3] 2020. 1. 13.
C/C++. 구조체 변수 선언 동시 멤버 초기화 typedef struct { uint8_t UI8[4]; float f; uint32_t UI32; }ST_T1; ///// 위 타입선언된 구조체 자료형으로 구조체 변수 선언 시점에 바로 멤버변수 초기화 가능. ST_T1 myST_T1 = { .UI8[0] = 20, .UI8[1] = 30, .f = 2.3, }; 첫 등록 : 2020-01-10 최종 수정 : 단축 주소 : https://igotit.tistory.com/2439 2020. 1. 10.
C, C++. 상수 2진수 , 16진수 16진수 - 숫자앞에 0x부착. 예 . 0xAC 16진수 이므로 0,..,9,A,B,C,D,E,F 로만 구성. 소문자로 해도됨. - 16진수 표현 문법은 모든 C, C++ 컴파일러에서 동일하여 완전한 표준으로 생각해도됨. 2진수 - 숫자앞에 0b 부착. 예. 0b10010001. 2진수이므로 1과0으로만 구성. - C++ 14 에서는 가독성 향상 목적으로 구분자' 사용해도됨. 예 : 0b1000'0001 - 원래 C 언어에는 2진수 표현 표준규격없었음. - 컴파일러마다 0b 를 2진수로 처리가능한 경우도 있고, 아닌 경우도 있음. - gcc 에서는 0b 가능. KEIL MDK-ARM 에서는 0b 모름. 2진수 표현 위한 마크로 - 모든 C 컴파일러에서 사용가능하려면 아래 코드예처럼 마크로 이용해도 된다... 2020. 1. 3.
C/C++. 메모리 스택, 힙,지역변수, 동적 메모리 할당. stack, heap, new, delete 스택(Stack), 힙(Heap) C/C++ 에서의 스택이니, 힙이니 하는 것들은 C/C++ 컴파일러에서 메모리 핸들링 하는 것에 대한 기능적 메모리 구분 명칭. (타겟 시스템에 하드웨어적으로 스택, 힙 영역의 메모리가 따로 있는 것 아님) Stack 1. 프로그램의 "함수내"에서 선언된 지역변수(자동변수) 저장되는 메모리. 2. 함수가 끝나면 stack 에 저장된 것은 프로그램 코드에서 명시적 제거 처리 하지 않아도 자동 삭제됨. Heap 1. 프로그램에서 "동적 생성"한 경우 Heap 에 저장됨. - 동적 생성이란, new, malloc 함수 등으로 메모리 할당하는것을 의미함. 2. Heap 에 생성된 메모리는 자동 삭제되지 않음. 프로그램내에서 명시적으로 제거처리(delete, free 등) 해야 .. 2019. 12. 28.
C/C++. 구조체 메모리 동적 할당. malloc , free 개요 // 정적 구조체 배열 생성예. typedef struct _st1 { uint8_t ui8Arr[100]; }ST_T1 ST_T1 myST_T1[5][9]; // 구조체 ST_T1 을 2차원 배열 5x9 짜리로 생성하는것. 위와 같은 정적 생성 방식의 구조체 배열 생성하지 않고 동적 생성하는 방법 정리. 1. 구조체 멤버만 동적 생성예. 2. 구조체 배열만 동적 생성예. 3. 구조체 멤버 및 배열 모두 동적 생성예. 1. ST_T1 의 멤버 1차원 배열만 동적생성 예. 상기와 같은 정적 방식으로 구조체 2차원 배열로 만든것과 달리, ST_T1 의 1차원 배열 uint8_t ui8Arr[100] 처럼 고정 사이즈 100 이 아닌 동적 임의 사이즈 배열 생성가능한것을 멤버로 가지면서, ST_T1 의 .. 2019. 12. 28.
C/C++. #error. 컴파일시 사용자 지정 오류 메시지 출력 하고 컴파일 종료 #if !defined(THEPARA) // THEPARA 가 #define 되어있지 않다면, #error THEPARA define needed // 컴파일시 이 문구가 표현되고 컴파일 종료됨. #endif 첫등록 : 2019년 10월 22일 최종수정 : 본 글 단축주소 : https://igotit.tistory.com/2349 2019. 10. 22.
C/C++. #define. #, ## 등 #define 에서 사용되는 ## 과 # ## : 토큰 합치는것. /// ## 사용예 #define myDEFINE_INTIDX(idx) int myint ## _idx void main() { myDEFINE_INTIDX(0); // int myint_0; 과 동일. myDEFINE_INTIDX(1); // int myint_1; 과 동일. } # : 토큰에 " " 해주는것. 즉 문자열로 처리되게 하는것 ///// # : 문자열로 변환하는것 #define myPrint(para) printf(#para) int main() { // 문자열 출력을 의도한건데 "" 없이 사용해도 // #define myPrint(para) printf(#para) 의하여 // 결국 printf("Hello"); 가 실행되.. 2019. 10. 22.
C/C++. const int * , int const *, int * const, int * const const C/C++에서 const int my_int; // 일반변수는 선언과 동시에 초기화 안해도 됨. const int my_c_int = 1; // const 는 선언과 동시에 초기화 해야함. int * my_p_int; // my_p_int는 일반포인터변수이므로 초기화 안해도 됨. /* const int * (이것과 int const * 는 같은의미) const int 의 포인터변수 선언시 사용됨. 즉, 아래 선언처럼 하면 my_p_c_int 는 const int 인것의 포인터변수. */ const int * my_p_c_int = &my_int; // 틀림. my_p_c_int 는 const int 인것의 포인터 변수여야 함. const int * my_p_c_int = &my_c_int; //가능. m.. 2019. 10. 21.
C,C++. enum /// enum 기본. enum { enum_1 // 초기값 설정하지 않으면 첫멤버값은 0. ,enum_2 // 초기지 기록하지 않으면 앞에 기록된 멤버값 +1 의 값을 가짐. }; // 멤버 정수값을 사용자 임의 지정 가능. 통상 지정해서 사용함. enum { enum_1 = 100 // ,enum_2 = 32 // ,enum_3 = 100 // enum_1 과 값은 값. 멤버 중에 있는 값과 중복되는 것으로 설정해도됨. }; //----------------------------------------------------------- typedef enum /// typedef enum 실 코딩에서 유용하게 많이 사용됨. /// 팁 . 멤버이름에 enum_ 부착하는게 사용시 혼선 작음. 안그럼 이게 .. 2019. 5. 16.
C,C++. enum with get string. 첫등록 : 2019년 5월 12일. 최종수정 : 본 글 단축주소 : https://igotit.tistory.com/2161 2019. 5. 12.
C++ 클래스. 함수 오버라이딩. 가상함수. 순수가상함수. 추상 클래스.인터페이스 클래스. base class 에서 상속된 derived class 에 동일이름의 함수(예 : myFunction )가 있는 경우, base 클래스측의 함수선언에 따라 다른 동작이 이뤄진다. 아래 테이블의 항번 1, 2, 3 에 base 클래스 측의 함수선언방식 3 종을 보이고 있다. 항번 base class derived class 1 class base { void myFunction(); }; class derived : base { void myFunction(); }; 2 class base { virtual void myFunction(); }; 3 class base { virtual void myFunction() = 0 ; }; virtual , 오버라이딩. 상기 1 처럼 base 클래스의 함수 선.. 2017. 6. 23.

.    
현물 |선물 인버스 |선물 USDT     현물 | 선물 USDT |봇제작툴/카피트레이딩     현물 |선물 인버스 |선물 USDT     .