프로그래밍/C,C++ 12

Error: Initialization discards qualifiers from pointer target type

문제점 및 증상프로그램 개발 중에 다음 코드에서 "Initialization discards qualifiers from pointer target type" 오류 메시지를 받았다. char *arrReportRegName[] = { "ADE7953_REG8_LCYCMODE", "ADE7953_REG16_LINECYC", "ADE7953_REG16_Period", "ADE7953_REG24_IRQSTATA", "ADE7953_REG24_IRQSTATB" }; 해결 방안참고자료의 내용을 참고해 보면, 위 코드에서 문자열 배열을 초기화하여 선언하는 부분에서, 문자열 상수를 초기화하는데 이용하여는데, 변수는 일반 char * 라서 "Initialization discards qualifiers from poi..

Debug Assertion Failed! vector subscript out of range Line: 932

증상 및 문제점STL의 vector를 사용하던 중에 다음과 같은 오류가 발생하며 프로그램이 중단된다. 원인한줄 한줄 vector를 사용하는 부분을 디버깅하여 본 결과, vector를 참조하는 색인 값을 vector의 실제 크기보다 큰 값을 잘못 입력하여 발생하는 문제입니다.유사한 오류 발생 예제 #include #include "player.h" #include "enemy.h" #include #include using namespace sf; int main() { RenderWindow window(VideoMode(800,600), "Deine mudda"); Clock clock; int timecount = 0; std::vector enemyv; Player player1("player.pn..

warning D9030: '/Gm' is incompatible with multiprocessing; ignoring /MP switch

증상 및 문제점VC++ 프로젝트를 빌드하면 다음과 같은 warning이 나타난다. warning D9030: '/Gm' is incompatible with multiprocessing; ignoring /MP switch 프로젝트의 전체 소스의 개수가 5개도 안되는데 컴파일하는데 매우 느림(소스 파일 1개씩 컴파일이 되고 있음). 해결책D9030 warning가 발생하는 이유는, 말 그대로 /Gm 스위치와 /MP 스위차가 함께 쓰여서, /MP 스위치가 무시되면서 발생하는 경고입니다.가장 쉬운 방법은 /Gm{최소 다시 빌드 사용} 옵션을 끄는 것입니다.해당 옵션을 끄는 방법은 다음과 같습니다. 프로젝트의 속성 페이지 대화 상자를 엽니다.C/C++ 폴더를 클릭합니다.코드 생성(Code Generation)..

[wxWidgets] 파일 삭제 방법(How to delete a file)

wxWidget 도움말에서 파일을 삭제하는 함수를 찾아 보았으나, 찾기가 어려워서 구글링을 하였더니, 바로 답이 나왔다.윈도우의 DeleteFile 함수를 사용하는 방법도 있겠으나, wxWidget 스럽게 사용하기 위해서는...wxRemoveFile 함수를 사용하면 된다. bool wxRemoveFile (const wxString & file)Removes file, returning true if successful. Include file: #include 참고자료How to delete a file?

[wxWidgets] assert "assert GetEventHandler()== this" failed in ~wxWindowBase()

Windows 7 / Mingw32 / wxWidget-2.9.4 / C::B문제점 및 증상wxWidgets의 wxAuiManager로 작성된 프로그램을 종료할 때, 다음과 같은 Debug Alert 창이 나타남 : assert "assert GetEventHandler()== this" failed in ~wxWindowBase() 해결 방안Frame가 소멸될 때, AuiManager의 UnInit() 함수가 정상적으로 호출되지 못하여 발생Frame 소멸자에서 wxAuiManager.UnInit() 함수 호출 MyFrame::~MyFrame() { m_pAuiManager->UnInit(); } 참고자료assert GetEventHandler()== this failed

[wxWidgets] assert "nModes == 1" failed in MSWGetStyle(): wxListCtrl style

문제점 및 증상프로그램을 최초 실행할 때, 다음과 같은 Debug Alert 창이 나타남 : assert "nModes == 1" failed in MSWGetStyle(): wxListCtrl style 원인 분석경고창에 표시된 대로, 클래스에서 생성한 wxListCtrl 컨트롤의 Style에서 화면 표시 모드에 관련된 속성이 단 한 개가 설정되어야 함 하나도 설정하지 않거나, 두 개 이상을 설정하면 위와 같은 Debug Alert 창이 나타남 해결 방법위 wxListCtrl style 에서 붉은색 사각형 내의 4개중 한 개만 설정하고 빌드

[Mingw] How to build wxFreeChart with wxWidgets(2.9.4)

wxWidgets이 먼저 빌드가 되어 있어야만 한다. 이를 위하여 앞글 "[Mingw] How to build wxWidgets."을 참고하라. wxFreeChart 빌드하기MSYS 창 실행wxWidgets configure 실행 $ cd /wx $ ./configure --enable-threads --enable-shared --disable-debug --disable-debug_flag --disable-debug_info --enable-graphics_ctx enable-threads, enable_graphics_ctx 등은 반드시 활성화되어 있어야 wxFreeChart 빌드가 가능함configure 후에, config.log 파일을 열어서 활성화가 되어 있는지 확인 필요활성화되지 않은 패키..

[Mingw] How to build wxWidgets.

WIndows 7 64bit OS 사전 준비사항Mingw32 설치mingw-get-inst-20120426.exe (662.7 kB) 다운로드 및 mingw 설치http://www.mingw.org/download.shtmlmingw32 및 MSIS 1.0 까지 설치된 것을 확인MSIS 의 fstab 수정하기/MSYS/1.0 폴더 확인msys\1.0\etc\fstab 파일을 메모장에서 열고 다음과 같이 수정 /mingw /wx wxWidgets-2.9.4 소스 준비http://www.wxwidgets.org/downloads/ ; Latest Development Release: 2.9.4wxFreeChart-1.6 소스 준비http://freecode.com/projects/wxfreechart wxW..

[wxWidgets] wxTreeCtrl에서 File Drag & Drop 처리

서론 윈도우 탐색기 등에서 파일의 드래그 앤 드롭을 매우 많이 편리하게 사용하고 있습니다. 이번에는 새로 만든 컨트롤에서 파일의 드래깅 시작을 처리할 수 있는 방법에 대해서 알아보겠습니다. 드래그 앤 드롭(Drag and Drop) 파일에 대한 드래그 앤 드롭을 wxWidgets에서 처리하기 위해서는 "wx/dnd.h", "wx/dataobj.h" 헤더를 포함해야 하고, wxDropTarget 및 wxDropSource를 만들어서 처리해 주어야만 합니다. wxTreeCtrl에서 드래깅을 시작하기 위해서는 OnTreeBeginDrag 이벤트 핸들러를 구현해 주어야 합니다. OnTreeBeginDrag 이벤트 핸들러 내부에서 wxFileDropTarget 및 wxDropSource를 만들어서 드래깅을 시작하..

[wxWidgets] wxFileConfig 를 이용 INI 파일로부터 섹션의 모든 항목들 읽기

델파이의 TIniFiles.ReadNames 와 유사한 작업을 하는 방법에 대한 것입니다. wxConfigBase::GetFirstGroup(); wxConfigBase::GetFirstEntry(); wxConfigBase::GetNextGroup(); wxConfigBase::GetNextEntry(); wxConfigBase::GetNumberOfEntries(); wxConfigBase::GetNumberOfGroups(); wxConfigBase::HasEntry(); wxConfigBase::HasGroup(); 위에 열거한 함수들을 활용하여 INI Key 이름을 몰라도 동적으로 정보를 읽어 처리할 수 있습니다. 다음은 간단한 예제입니다. // enumeration variables wxStr..

728x90