Language & API/C++
Language & API/C++
2021. 5. 26.
콜백 함수 예제
콜백함수를 내가 사용하는 이유는 멀리있는 함수를 연결하여 현재 지점에서 사용하고 싶을 때 또는 현재 함수를 멀리 줄때 이용한다. 즉 함수를 꾸며 주는 모양은 간단하나 그 응용 부분은 설계적인 부분이 포함되어야지만 잘 사용할수 있다. 아래 예제는 부모 다이얼로그에서 자식 다이얼로그를 생성하고 자식 다이얼로그에서 부모의 Funtion을 활용할때다. 자식 다이얼로그에 콜백함수 등록 void (*callback_fun)(int, int, int, int, int, int); void -> 반환될 값 callback_fun -> 함수 이름 (int, int, int, int, int, int) -> 매개변수 부모 다이얼로그에서 자식 다이얼로그를 만들고 부모 함수를 연결만 해주면 된다. dlg = new setti..
Language & API/C++
2016. 7. 19.
[c++_For_C] assert
1234567891011121314#include #include using namespace std;int main(_In_ int _Argc, _In_reads_(_Argc) _Pre_z_ char ** _Argv, _In_z_ char ** _Env){ int abc = 1000; int test = -1; cout
Language & API/C++
2015. 11. 17.
[코딩]파라미터 디폴트
파라미터 디폴트로 정할때 선언부에서만 정의해야한다. #include using namespace std;void abc(int a = 10, int b = 20);
Language & API/C++
2015. 10. 8.
[코딩]동적 2차 배열 만들기
동적 2차 배열을 만드는 방법이다. 매번 까먹기에 적어둔다. 1234567891011121314151617181920int a[2][4] = { {1,2,3,4}, {5,6,7,8}}; int **te = new int*[2]; for (int i = 0; i
Language & API/C++
2015. 10. 7.
[코딩]C++ cout 관련 정보
cout 에서 소수점 고정 하기 위해 필요한 함수 들이다. cout.precision(5)cout.setf(ios::fixed, ios::floatfield); 이렇게 적으면 cout 을 쓰면 계속 유지가 된다. 해제는 다음과 같이 하자 cout.unsetf(ios::floatfiled); cout 관련된 홈페이지 : http://www.cplusplus.com/reference/ios/ios_base/
Language & API/C++
2015. 9. 3.
[이론]SAL를 사용하자(Source Code Annotation Language)
SAL의 정의 및 이를 사용해야 하는 이유 1. 코드의 품질을 높이는 SAL 2. 보안 및 코드의 안정성을 개선하는 데 도움이 되는 강력한 기술 SAL 네 가지 기본 유형의 사용 패턴으로 분류 되는 매개 변수를 정의 합니다.범주매개 변수 주석설명함수 호출에 대한 입력_In_데이터는 호출된 함수에 전달되고 읽기 전용으로 취급됩니다.호출된 함수에 대한 입력과 호출자에 출력_Inout_사용 가능한 데이터 함수에 전달되고 잠재적으로 수정 됩니다.호출자에 출력_Out_호출자만 쓰려고 하는 호출된 함수에 대한 공간을 제공 합니다.호출된 함수는 해당 공간에 데이터를 씁니다.호출자에 포인터 출력_Outptr_마찬가지로 호출자에 출력. 호출된 함수에서 반환되는 값이 있습니다.
Language & API/C++
2015. 6. 26.
HEAP CORRUPTION DETECTED 발생
HEAP CORRUPTION DETECTED 발생 void CIni::SaveString(const TCHAR *KeyName, TCHAR *value) { int strLen = _tcslen(value); TCHAR *strQuot = new TCHAR[strLen + 1]; strQuot[0] = _T('\"'); _tcsncpy(strQuot + 1, value, strLen); strQuot[strLen + 1] = _T('\"'); strQuot[strLen + 2] = _T('\0'); WritePrivateProfileString(_appName, KeyName, strQuot, _fileName); delete[] strQuot; } 위와 코드 delete[] 부분에서 아래와 같은 에러가..
Language & API/C++
2015. 6. 23.
Mutex 관련 내용
CreateMutex 함수 SyntaxC++HANDLE WINAPI CreateMutex( _In_opt_ LPSECURITY_ATTRIBUTES lpMutexAttributes, _In_ BOOL bInitialOwner, _In_opt_ LPCTSTR lpName ); ParameterslpMutexAttributes [in, optional]: 보안 속성 지정, 핸들 상속 여부 bInitialOwner [in]: 뮤텍스는 뮤텍스 오브젝트를 생성하는 쓰레드에게 기회를 먼저 줄수 있다. 먼저 차지하는 사람이 임자가 되는 값은 FALSE => waitForSingleObject 뮤텍스 획득 용도뮤텍스를 생성하는 쓰레드가 먼저 기회를 얻는 TRUElpName [in, optional]: 뮤텍스 이름이다. ..
Language & API/C++
2015. 6. 7.
함수 오버로딩(Function Overloading)
C++에서 함수 오버로딩을 지원해준다. 함수 오버로딩이랑 간단히 말해 함수이름이 같지만 파라미터가 다른 함수들이 존재 할 수있다는 뜻이다. 예1) int MyFunEx(char c) { ... }; int MyFunEx(int c) { ... }; 예2) int MyFunEx(char c, int a) { ...}; int MyFunEx(int a) { ... }; 하지만 아래는 컴파일 오류를 발생시킨다. 즉 리턴값이 다를 경우.. int MyFunEx(char c) { ... }; void MyFunEx(char c) { ... };