'지속가능티끌/C . C++'에 해당되는 글 28건


 

  1. C++ template (템플릿), 변수, 함수, 클래스 템플릿. 제네릭 타입.

    ( 지속가능티끌/C . C++ )
    개요. C++ template C++ template C++ 언어의 기본 요소. 클래스, 함수, 변수가 제네릭타입 (Generic Type) 으로 동작하게 하는것. - 클래스 템플릿 : 클래의 멤버변수를 template 로 선언했다는 의미. - 함수 템플릿 : 함수의 인자, 반환값을 template 으로 선언 했다는 의미. - 변수 템플릿 : 변수를 template 로 선언했다는 의미. 제네릭타입으로 선언된 것이 실제 사용될 자료형으로 되는것은 컴파일 시점에 이뤄진다. 즉, 컴파일러가 코드에서 사용된 특정 자료형별로 지가 알아서 추가 코드 작성해주는 것. 유용성. 자료형이 달라진 것은 추가 코드 작성하지 않아도 된다. 연산자오버로딩,다중상속시 간편하다. 추가정보. 1. 위키백과 : 템플릿(C++) tem..

     

  2. C/C++. 실수 , 올림 내림 반올림 , ceil floor round

    ( 지속가능티끌/C . C++ )
    #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..

     

  3. C++. std::map . 키-값 컬렉션

    ( 지속가능티끌/C . C++ )
    #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(); // 요..

     

  4. C/C++. 윈도우. 파일 저장, 읽기 . FILE . fopen, fprintf, fscanf

    ( 지속가능티끌/C . C++ )
    파일 저장하기 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..

     

  5. C++ REST SDK. Json 형식 다루기 .

    ( 지속가능티끌/C . C++ )
    개요 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

     

  6. C/C++. C 에서 C++ 함수 호출하기. extern "C" 선언. C++ 에서 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);

     

  7. C. C++. 메모리 직접 접근

    ( 지속가능티끌/C . C++ )
    메모리 주소 ( 예. 0xF000F100 등 아무거나 시스템에서 메모리 주소로 사용하고 있는 것 ) 에 직접 접근하여 값 uint32_t 값 기록하는 방법. 임베디드 시스템 이라면 메모리 주소는 GPIO 포트 출력 설정하는 레지스터 주소일수도있고, 플레시 메모리 영역일수도 있다. // 코드 의미. 주소에 해당하는 숫자를 uint32_t 포인터로 처리하고 그것의 값 * 에 0xFF 대입하라. // volatile 은 컴파일러 (특히 GCC) 의 최적화 옵션 적용하지 말라는 설정. 코드에 기록된 그대로 컴파일 하라는 의미. *((volatile uint32_t *) 0xF000F100 ) = 0xFF; // 매번 위 구문 타이핑 하기 번거로우니 매크로로 정의하면 사용하기 편리하다. #define MEM_LE..

     

  8. C/C++. & 와 * 메모리 접근 형변환

    ( 지속가능티끌/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]

     

  9. C/C++. 구조체 변수 선언 동시 멤버 초기화

    ( 지속가능티끌/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

     

  10. C, C++. 상수 2진수 , 16진수

    ( 지속가능티끌/C . C++ )
    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 컴파일러에서 사용가능하려면 아래 코드예처럼 마크로 이용해도 된다...