2019. 3. 19. 10:34

LINK : fatal error LNK1123: COFF로 변환하는 동안 오류가 발생했습니다. 파일이 잘못되었거나 손상되었습니다.


이런 글자가 나올 때 다음과 같이 해결하면 된다


원인 : 두 개 이상 다른 버전의 Visual Studio를 설치했기 때문


cvtres.exe 파일의 중복 존재


해결 방법 : 


C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin


C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64


위의 두 군데에 cvtres.exe 파일이 존재하는데 첫 번째 경로에 있는 cvtres.exe 파일을 다른 이름으로 변경하던지 삭제한다



2019. 1. 23. 21:38

경로를 저장할 때 텍스트에서 \\를 \로 인식한다 


따라서 XML에 저장할 때 \로 저장한다


다시 로딩할 때 \\가 되어 있어야 하는데


\를 읽어들이기 때문에 파싱을 실패하여 로딩이 제대로 되지 않는다




* 해결 방법


- 저장할 때 \\ 를 \\\\로 변경하여 저장한다

2018. 12. 18. 16:20

함수 포인터는 많이 올라와 있지만


클래스 메서드 포인터를 파라미터로 사용하는 방법은 많이 없어서 


내가 자주 사용하기 위해 올린다



클래스 헤더 파일





클래스 소스 파일






실제 사용 파일



2018. 12. 3. 18:12

다음과 같다


2018. 11. 29. 17:03

VS2010에서 VS2015로 마이그레이션하면 다음과 같은 버그가 생성된다.

LNK2001  _vsnprintf 외부 기호를 확인할 수 없습니다

 

그럴 때는 이전 라이브러리가 호환되지 않기 때문에 그렇다

 

속성 - 구성 속성 - 링커 - 입력 - 추가 종속성 

 

에 다음을 추가한다

 

legacy_stdio_definitions.lib

 

 

2018. 5. 17. 10:36


2018. 2. 8. 14:38


setlocal enabledelayedexpansion


for /f "delims=" %%i in (%input_file) do (

    set one_line=%%i

    set var=!one_line:8,18!

    echo !var!

)



for 문 내에서는 %one_line% 대신 !one_line! 을 사용한다

2017. 12. 22. 14:46

네트워크 폴더로 접속하려면 다음과 같이 한다



net use [ip 주소] /user: [아이디] [암호]



예제 



set MyPath=\\100.120.12.247


net use %MyPath% /user: jmlee 1234



mkdir %MyPath%\재만재만



* 한글 경로가 깨지면 인코딩 UTF-8 대신 ANSI 로 NotePad++에서 변경




* 날짜


echo 날짜 : %date%

echo 시간 : %time%


set YEAR=%date:~0,4%

set MONTH=%date:~5,2%

set DAY=%date:~8,2%


echo %YEAR%

echo %MONTH%

echo %DAY%

pause





2017. 8. 10. 16:17

* 코드 품질


- 함수 복잡도

- 함수 간 호출 관계

- 전역 변수 수

- 함수 및 모듈 수

- 사용되지 않는 변수 및 함수



* 아키텍처 품질


- 요구사항 및 설계 문서 상태

- 모듈 간 호출 관계

- 모듈화 상태

- 아키텍처 스타일

- 아키텍처와 모듈 재사용성



* 반복하지 않기




- 같은 코드가 중복된다면 수정도 여러번 해야 한다





* 한 가지만 하기


- 함수는 한가지를 해야 한다

- 그 한가지를 잘해야 한다

- 그 한가지만을 해야 한다





* 의미있게 이름 짓기



2017. 7. 11. 16:17

코드 리뷰

프로그래밍/C++ 2017. 7. 11. 16:17

* 코드리뷰에 대한 오해


- 버그를 발견하는 것을 보장하진 않는다


- 코드의 결함을 찾는 것이 목적이 아니라, 서로 배우고 가르쳐 주고, 팀의 협업능력을 높여주는 것이어야 한다. (그렇지 않으면 팀이 깨어진다)



* 코드리뷰가 잘 되려면


- 너무 많은 절차와 규칙을 만들지 마라. 절차를 아주아주아주 간단하게 하라


- 강요하지 마라. 대신 Encourage 하라


- 모든 코드 commit 을 리뷰하도록 한다거나 하는 형태로 Micro - Manage 를 하지마라


- 개개인의 작업 흐름을 끊지마라


- 코드리뷰를 통해 발견한 것들을 널리 공유하라


- 코드리뷰를 늦게 하는것은 안하는 것보다 나쁠수 있다. Iteration 에 포함시켜라


- 한꺼번에 덜하기보다는 조금씩 자주하라


- 툴에 얽메이지 마라, 중요한것은 개발자들이 서로 대화를 하고 코드를 공유하는 것이다


- 너무 많은 리뷰어를 참여시키지 마라. 2-4 명이 적당하다




* 어떻게 잘 되고 있는지 알수 있는가


- 쉽진 않다, 사실 필요없을 수도/불가능 할수도 있다, metric 에 집착할 필요는 없다.


- 장기간의 이득은 측정할 수 없지만 많다


- Simple Metric 들이면 충분할 수 있다. (리뷰에 사용된 시간, 리뷰 comment 등). 

2017. 3. 14. 17:26

C Runtime Library와 MFC Library의 import 순서가 바뀌어서 강제로 순서를 바꾸어 주어야 한다


프로젝트 속성 -> 링커 -> 입력 -> 특정 기본 라이브러리 무시 : 

uafxcwd.lib; libcmtd.lib 입력


프로젝트 속성 -> 링커 -> 입력 -> 추가 종속성 : 

uafxcwd.lib; libcmtd.lib 입력

2017. 2. 7. 17:57

도구 - 옵션 - 키보드 - 다음 추가 키보드 매핑 구성표 적용 - Visual C++ 6








이러면 빌드를 F7을 눌러서 실행할 수 있다




Ctrl + D 찾기 창 메뉴에 보이게 하기




파일에서 찾기 아이콘 옆에 단추 추가/제거 를 눌렀을 때 


Ctrl + D 를 단축키로 하는 찾기 창을 추가할 수 있다







2016. 10. 18. 19:43

printf 인자

프로그래밍/C++ 2016. 10. 18. 19:43

1. %d : 10진수로 출력 정수형 

2. %f : 실수형

3. %e : 지수형

4. %o : 8진수로 출력 

5. %x : 16진수로 출력 

6. %u : 부호없는 10진수로 출력 

7. %g : 실수형으로 자동 출력

8. %p : 포인터의 주소를 출력

9. %c : 하나의 문자로 출력 문자형 

10. %s : 문자열을 출력

2016. 9. 20. 16:49

* shared_ptr


- 참조 카운팅 방식 스마트 포인터

- 가리키고 있는 객체에 대해 소유권을 가지지 않고 참조 카운트만 유지하는 포인터

- 다른 객체를 가리키면서 포인터에 대한 소유권을 공유

- 자원을 참조하는 외부 객체의 개수를 관리하다가 그 개수가 0이 되면 자동 삭제

- STL 컨테이너 사용 가능

- 가비지 컬렉션의 동작과 유사

- 가비지 컬렉션과 차이는 참조 상태가 고리를 이루는 경우는 없앨 수 있음

(서로 다른 두 객체가 서로를 참조)



* unique_ptr


- 소유권 독점 방식을 사용하는 스마트 포인터

- 복사 생성자와 대입 연산자를 제공하지 않음

- 복사할 수 없으며 소유권 이전을 위해 std::move( ) 이용

- 소유권 해제 시점은 포인터 객체가 가리키는 객체의 소멸, 대입연산, reset 메소드 에서 명시적 호출을 통해 값을 변경할 때

- 스스로 포인터의 유일성을 보장



* weak_ptr


- shared_ptr의 순환 참조로 발생하는 문제를 해결하기 위해 사용하는 특수 포인터

- 레퍼런스 카운트에 포함되지 않고 shared_ptr의 객체만 참조

- 약한 참조 (객체가 살아있도록 유지 않고, 객체가 살아있는 동안만 참조 가능)

- expired 함수를 통해 자신이 참조하는 shared_ptr 상태 확인

- 포인터에 대해 직접 접근 불가능하며, 접근을 원하면 lock( ) 을 통해 shared_ptr로 변환 뒤 shared_ptr의 get( )으로 접근

2016. 9. 20. 09:13

- 다양한 상황에서 어떤 스마트 포인터를 사용해야 하는지 아래에 설명


* Exception 안전



* 가비지 컬렉션



* 효율성



* STL 컨테이너



* 어디에 사용해야 하는가?


- 지역변수

- std::unique_ptr을 사용해야 한다 (boost::scoped_ptr)


- 클래스 멤버 변수

- copied_ptr


- STL 컨테이너

- 참조 카운팅, 참조 연결이 되는 포인터 ( 가비지 컬렉션이 되는 포인터 )


- 명시적 소유권 이전 : Owned pointer


- 큰 객체 : Copy on write