'프로그래밍/C/C++'에 해당되는 글 6건
- 2013.05.09 프로그램 수행 시간 측정 방법
- 2011.06.21 signed, unsigned 섞어 쓸 경우
- 2011.04.14 C/C++에서 ##로 __LINE__을 붙이기
- 2010.11.22 mydebug.h
- 2010.03.20 argv 처리
- 2009.01.19 Qt library 관련하여 몇 가지 팁들
- .
프로그래밍/C/C++2013. 5. 9. 11:40
프로그래밍/C/C++2011. 6. 21. 18:50
프로그래밍/C/C++2011. 4. 14. 23:38
가장 쉬워보이는 방법인
A ## __LINE__
은 (적어도 gcc를 포함한) 여러 컴파일러에서 원하는 대로 작동하지 않는다. 그럼 어떻게 해야 하느냐? 구글링을 해봤다.
http://stackoverflow.com/questions/3580533/c-preprocessor-magic
아직 이렇게 되는 원리를 이해할 수 없다. 아무튼 저걸 성공한 저 분에게 경의를 표한다.
(http://stackoverflow.com/users/15168/jonathan-leffler)
설명을 적어준 분에게도.
(http://stackoverflow.com/users/187690/andreyt)
http://en.wikibooks.org/wiki/C_Programming/Preprocessor
A ## __LINE__
은 (적어도 gcc를 포함한) 여러 컴파일러에서 원하는 대로 작동하지 않는다. 그럼 어떻게 해야 하느냐? 구글링을 해봤다.
http://stackoverflow.com/questions/3580533/c-preprocessor-magic
아직 이렇게 되는 원리를 이해할 수 없다. 아무튼 저걸 성공한 저 분에게 경의를 표한다.
(http://stackoverflow.com/users/15168/jonathan-leffler)
설명을 적어준 분에게도.
(http://stackoverflow.com/users/187690/andreyt)
#define DECLARE(x) _DECLARED_VARIABLE_ ## x ## _LINE_ ## __LINE__ #define DECLARE11(x, line) _DECLARED_VARIABLE_ ## x ## _LINE_ ## line #define DECLARE10(x) DECLARE11(x, __LINE__) #define DECLARE23(line) _LINE_ ## line #define DECLARE22(x) _DECLARED_VARIABLE_ ## x #define DECLARE21(x, line) DECLARE22(x) ## DECLARE23(line) #define DECLARE20(x) DECLARE21(x, __LINE__) #define DECLARE32(line) _LINE_ ## line #define DECLARE31(x, line) _DECLARED_VARIABLE_ ## x ## DECLARE32(line) #define DECLARE30(x) DECLARE31(x, __LINE__) #define DECLARE42(x, line) _DECLARED_VARIABLE_ ## x ## _LINE_ ## line #define DECLARE41(x, line) DECLARE42(x, line) #define DECLARE40(x) DECLARE41(x, __LINE__) int DECLARE(y); int DECLARE10(z) = 12; int DECLARE20(a) = 37; int DECLARE30(b) = 91; int DECLARE40(c) = 129;이 많은 코드 중 (아마도) DECLARE40만 원하는 대로 동작할 것이다. (컴파일러에 따라 다를 수도 있다.) 컴파일이 안 되는 DECLARE20과 DECLARE30을 제외하고 나머지의 결과는 다음과 같다.
int _DECLARED_VARIABLE_y_LINE___LINE__; int _DECLARED_VARIABLE_z_LINE___LINE__ = 12; int _DECLARED_VARIABLE_c_LINE_23 = 129;결론적으로 다음과 같이 사용하면 된다. Static assert의 경우 크기가 음수인 배열을 typedef로 선언하면서 컴파일 에러를 발생시키는 방식이다. 이건 (http://stackoverflow.com/questions/1597704/verifying-that-c-c-signed-right-shift-is-arithmetic-for-a-particular-compiler)에서 본 것.
#define LINE2(x, line) x ## line #define LINE1(x, line) LINE2(x, line) #define LINE(x) LINE1(x, __LINE__) #define MY_STATIC_ASSERT2(x, line) \ typedef int MyStaticAssert_line_ ## line[(x) ? 1 : -1] #define MY_STATIC_ASSERT1(x, line) MY_STATIC_ASSERT2(x, line) #define MY_STATIC_ASSERT(x) MY_STATIC_ASSERT1(x, __LINE__)그 외에 참고할 만한 곳
http://en.wikibooks.org/wiki/C_Programming/Preprocessor
프로그래밍/C/C++2010. 11. 22. 19:33
프로그래밍/C/C++2010. 3. 20. 11:50
프로그래밍/C/C++2009. 1. 19. 12:49
Qt library를 윈도우에서 컴파일하기
메뉴얼만 보고 따라하면 잘 안 된다.
sspi.h의 문제는 다음글을 참고하여 고치자.
http://clifford.soup.io/post/10396099/Bugfix-Building-Qt-4-4-3-on
그래도 컴파일이 안 되면 다음글을 참고하여 고치자.
http://niftools.sourceforge.net/forum/viewtopic.php?f=4&p=15485
디버그 메시지를 볼 수 없다. qDebug(), printf 등의 함수를 사용하고 싶다.
.pro파일에 "CONFIG += console"을 적어준다.
이런 문제는 QMake Manual을 찾는게 좋다.
#include <QSqlDatabase>등을 추가해도 컴파일이 안 된다.
.pro파일에 "QT += sql"을 적어준다.
http://doc.trolltech.com/4.0/qtsql.html
SQLite를 쓰려고 했는데 한글 정렬이 안 된다.
한참을 구글링해도 답이 안 나오다가 겨우 해결했다.
이것은 사실 Qt 문제가 아니라 SQLite 문제이지만 따로 글쓰기 귀찮아서 여기에 적는다.
query.exec("PRAGMA encoding = \"UTF-8\"");
이 명령은 테이블이 하나도 없을 때만 가능하다.
http://www.sqlite.org/pragma.html
메뉴얼만 보고 따라하면 잘 안 된다.
sspi.h의 문제는 다음글을 참고하여 고치자.
http://clifford.soup.io/post/10396099/Bugfix-Building-Qt-4-4-3-on
그래도 컴파일이 안 되면 다음글을 참고하여 고치자.
http://niftools.sourceforge.net/forum/viewtopic.php?f=4&p=15485
디버그 메시지를 볼 수 없다. qDebug(), printf 등의 함수를 사용하고 싶다.
.pro파일에 "CONFIG += console"을 적어준다.
이런 문제는 QMake Manual을 찾는게 좋다.
#include <QSqlDatabase>등을 추가해도 컴파일이 안 된다.
.pro파일에 "QT += sql"을 적어준다.
http://doc.trolltech.com/4.0/qtsql.html
SQLite를 쓰려고 했는데 한글 정렬이 안 된다.
한참을 구글링해도 답이 안 나오다가 겨우 해결했다.
이것은 사실 Qt 문제가 아니라 SQLite 문제이지만 따로 글쓰기 귀찮아서 여기에 적는다.
query.exec("PRAGMA encoding = \"UTF-8\"");
이 명령은 테이블이 하나도 없을 때만 가능하다.
http://www.sqlite.org/pragma.html