Excel libraries for C#

OleDbConnection Very convenient because you can manipulate an Excel file as if it is a DBMS. However, OleDbConnection dosen't support special behaviors like adding a color to a cell. MDAC(OleDbConnection…

0 Comments

C++ enum 값은 32비트 정수인가?

앞서 언급한 이상한 정수 캐스팅 상황과 관련이 있는 일이다. C#과 C++ 둘다 쓰는 32비트 정수값이 있다. 간단히 설명하자면 Enum을 쓸 자리에 어떤 사연이 있어서 C#쪽에선 int를 나열하고 C++에선 enum을 이용했다.…

0 Comments

C#의 이상한 정수 캐스팅

간단한 정수 캐스팅 하나! long longValue = 1; int intValue = longValue; 이 코드는 컴파일러 오류를 발생시킨다. 오류 CS0266: 암시적으로 'long' 형식을 'int' 형식으로 변환할 수 없습니다. 명시적 변환이 있습니다.…

5 Comments

CLR 환경에서 TLS 공간은 몇 개나 있을까?

채팅 스크립트를 짜다가 스크립트 엔진에서 엄청난 버그를 발견했다. 꼼수를 써서 고치긴 했는데, 마지막 순간까지도 제대로 된 해결책인지 확신이 안 서서 마음을 졸였다. CLR 환경(C#, C++/CLI 등)에는 Thread Local Storage가 몇…

0 Comments

C++ 또는 C++/CLI 고수들에게 도움을 구합니다.

C++/CLI 코드를 작성하다가 괴상한, 아니 능력이 모자라서 이해 못하는 현상을 발견해서 이 블로그 구독자들의 도움을 받아볼까 합니다. 우선 다음 코드를 봐주세요. inline MyString marshal_as(System::String^ const & _from_obj) { if(_from_obj !=…

5 Comments

창조성과 규율

Beauty of any fine art comes not only from creativity but also from discipline. So it is with programming. C++ is a large language, and there is ample room to…

0 Comments

오늘의 C++

How To Organize Template Source Code 템플릿 코드는 헤더 파일에 있어야 한다고 착각하기 쉬운데, 코드 구현을 소스 파일(cpp)에 하면 컴파일(아닌가? 링크였나?) 오류가 나기 때문이다. 그래서 헤더 파일에 구현을 몽땅해놓는 경우가…

5 Comments

경고 수준 높이기

타입 변환에 문제가 발생해 런타임 오류가 나는 걸 발견하여, C++ 컴파일러의 Warning level을 3에서 4로 올리기로 결정했다. 전부터 생각만 해오던 일을 어제 문제가 불거지고 나서야 실천에 옮기게 됐다. 서버 팀원…

2 Comments

x64에서 ADO를 사용할 때 짜증나는 점

윈도우 2003 서버를 기준으로 ADO 바이너리가 두 군데 나뉘어 배포된다. x32 바이너리는 C:\Program Files (x86)\Common Files\System\ado\에 있고, x64 바이너리는 C:\Program Files\Common Files\System\ado\에 있다. 그러니 ADO를 import할 땐 이런 식으로 하면…

3 Comments

C++에서의 비트 연산

일부 잘못된 비트 연산 사례를 발견했다. 어떤 것이 제대로 된 코드인지 확인하고자 UnitTest++로 단위 테스트 코드를 짜봤다. /* EPA_NONE = 0x00000000, EPA_PRIMARY_KEY = 0x00000001, EPA_DB_INDEXING = 0x00000002, EPA_DB_SELECT = 0x00000004,//…

2 Comments