'Programming/C / Win32 / MFC'에 해당되는 글 102건

  1. 2015.05.19 gcc 컴파일러 -D 옵션
  2. 2015.05.19 setjmp, longjmp
  3. 2015.05.12 inline 함수..
  4. 2015.05.11 혼돈의 카오스 - 교차참조 헤더
  5. 2015.04.13 #ifdef 와 #ifdef ()의 차이
  6. 2014.12.23 winUSB / win32 physical drive
  7. 2014.12.09 printf POSIX 확장 %1$d
  8. 2014.11.05 include guard
  9. 2014.07.03 vc++ vector와 Vector 차이점?
  10. 2014.06.27 순열생성관련

배치빌드 하거나 할 경우 유용하게 쓰이는 옵션


-D name

Predefine name as a macro, with definition 1. 


-D name=definition

The contents of definition are tokenized and processed as if they appeared during translation phase three in a ‘#define’ directive. In particular, the definition will be truncated by embedded newline characters.

If you are invoking the preprocessor from a shell or shell-like program you may need to use the shell's quoting syntax to protect characters such as spaces that have a meaning in the shell syntax.


If you wish to define a function-like macro on the command line, write its argument list with surrounding parentheses before the equals sign (if any). Parentheses are meaningful to most shells, so you will need to quote the option. With sh and csh, -D'name(args...)=definition' works.


-D and -U options are processed in the order they are given on the command line. All -imacros file and -include file options are processed after all -D and -U options. 


-U name

Cancel any previous definition of name, either built in or provided with a -D option. 


-undef

Do not predefine any system-specific or GCC-specific macros. The standard predefined macros remain defined. 


[링크 : https://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html] 


+

Visual studio에서는 /D로 적용된다.

[링크 : https://msdn.microsoft.com/ko-kr/library/teas0593.aspx]

신고

'Programming > C / Win32 / MFC' 카테고리의 다른 글

가변인자를 다시 넘겨주기  (2) 2015.07.07
printf 가변인자의 비밀?  (0) 2015.06.18
gcc 컴파일러 -D 옵션  (0) 2015.05.19
setjmp, longjmp  (0) 2015.05.19
inline 함수..  (0) 2015.05.12
혼돈의 카오스 - 교차참조 헤더  (0) 2015.05.11
Posted by 구차니

댓글을 달아 주세요

setjmp와 longjmp는 함수를 넘나드는(다른 파일도 되려나?) 점프인데

goto 보다 더 위험한(!) 놈이라 잘 쓰지 않도록 되어 있는 것으로 보인다.

게다가 순수 C 구현이 아닌 OS 지원을 받는 넘이라 시스템 별로 다르게 작동 할지도 모른다고 ㄷㄷㄷ


코드로는 jmp_buf 는 점프할 지점을 저장하는 것이고

sizeof로 해보니 200을 뱉어낸다 ㄷㄷ (Ubuntu 12.04 64bit Edition)

PC(Program Counter) 뿐만 아니라 스택을 저장하는 거라 그런가?


코드상으로는 main()의 setjmp를 수행하는 지점이 돌아올 지점이고
longjmp에서 setjmp로 점프!
여러개의 setjmp로 여러 포인트를 잡아놓고
longjmp로 왔다 갔다 가능해 보이긴 하지만.. 까다로울 듯?

$ cat test.c

#include <stdio.h>

#include <setjmp.h>


jmp_buf pos;


void proc()

{

   static int i = 0;


   ++i;

   if(i<10)

       longjmp(pos, i);


   return;

}


int main()

{

   int a;


   a = setjmp(pos);

   printf("%d\n", a);

   proc();

   return 0;

}


[링크 : http://www.jiniya.net/wp/archives/5030]

[링크 : http://egloos.zum.com/studyfoss/v/5275830]


$ ./a.out
0
1
2
3
4
5
6
7
8
9



#include <setjmp.h>

int setjmp(jmp_buf env);

void longjmp(jmp_buf env, int val);


[링크 : http://linux.die.net/man/3/setjmp]

[링크 : http://linux.die.net/man/3/longjmp] 



신고

'Programming > C / Win32 / MFC' 카테고리의 다른 글

printf 가변인자의 비밀?  (0) 2015.06.18
gcc 컴파일러 -D 옵션  (0) 2015.05.19
setjmp, longjmp  (0) 2015.05.19
inline 함수..  (0) 2015.05.12
혼돈의 카오스 - 교차참조 헤더  (0) 2015.05.11
#ifdef 와 #ifdef ()의 차이  (0) 2015.04.13
Posted by 구차니

댓글을 달아 주세요

프로젝트에서 inline 함수를 다른 파일로 뺴서 하니

없는 함수라고 배째는 현상 발생 -_-


일단 __inline 키워드 빼니 해결되긴 한데..

extern __inline 이렇게 안해줘서 그런가?


[링크 : http://stackoverflow.com/questions/5229343/how-to-declare-an-inline-function-in-c99-multi-file-project]


KEIL

[링크 : http://www.keil.com/forum/13177/]

신고

'Programming > C / Win32 / MFC' 카테고리의 다른 글

gcc 컴파일러 -D 옵션  (0) 2015.05.19
setjmp, longjmp  (0) 2015.05.19
inline 함수..  (0) 2015.05.12
혼돈의 카오스 - 교차참조 헤더  (0) 2015.05.11
#ifdef 와 #ifdef ()의 차이  (0) 2015.04.13
winUSB / win32 physical drive  (0) 2014.12.23
Posted by 구차니

댓글을 달아 주세요

이번에 코드 재정비 중인데...

어우.. 정말 교차참조 하지 않도록 짜아야

수많은 ifdef의 향연에 꼬이는 바람에 뇌가 꽈직꽈직



아무튼 헤더도 계층을 만들어서 하던가 해야지

상호 교차참조 하는 상황에서는 예측 불가능한 상황이 발생할 수 있다.


헤더 중복 방지

[링크 : http://chanywa.com/8]


헤더 hierarchy

[링크 : http://ekessy.tistory.com/33]

신고

'Programming > C / Win32 / MFC' 카테고리의 다른 글

setjmp, longjmp  (0) 2015.05.19
inline 함수..  (0) 2015.05.12
혼돈의 카오스 - 교차참조 헤더  (0) 2015.05.11
#ifdef 와 #ifdef ()의 차이  (0) 2015.04.13
winUSB / win32 physical drive  (0) 2014.12.23
printf POSIX 확장 %1$d  (0) 2014.12.09
Posted by 구차니

댓글을 달아 주세요

찾아는 봐도 이런것 관련 내용은 아직인데..

현상으로만 봐서는..

#ifdef 와 #if defined () 가 동일한 의미이고

#ifdef () 는 다른 의미로 사용이 가능한게 아닐까 생각된다.


  1 #define TEST

  2 #ifdef TEST

  3 #warning TEST test

  4 #endif

  5

  6 #ifdef (TEST)

  7 #warning (TEST) test

  8 #endif

  9

 10 void main()

 11 {

 12         return 0;

 13 }


$ gcc test.c

test.c:3:2: warning: #warning TEST test [-Wcpp]

test.c:6:8: error: macro names must be identifiers

test.c: In function ‘main’:

test.c:12:2: warning: ‘return’ with a value, in function returning void [enabled by default] 


[링크 : https://gcc.gnu.org/onlinedocs/gcc-3.0.2/cpp_4.html]

[링크 : https://gcc.gnu.org/onlinedocs/cpp/Ifdef.html]



+

에러를 보니.. identifier.

간단하게 식별자로 ()가 들어갈 수 없는데 ( 부터 식별자로 인식을 해버리는 것으로 생각된다.

즉.. #ifdef {A-Za-z0-9_} 라고 정의가 되려나?

#define과는 다르게 #ifdef에서는 ()를 쓸수가 없다! 가 결론일듯

신고

'Programming > C / Win32 / MFC' 카테고리의 다른 글

inline 함수..  (0) 2015.05.12
혼돈의 카오스 - 교차참조 헤더  (0) 2015.05.11
#ifdef 와 #ifdef ()의 차이  (0) 2015.04.13
winUSB / win32 physical drive  (0) 2014.12.23
printf POSIX 확장 %1$d  (0) 2014.12.09
include guard  (0) 2014.11.05
Posted by 구차니

댓글을 달아 주세요

windows for dd 를 감싸서 먼가 만들려고 하는데

이 녀석이.. 장치 접근명을 필요로 해서 그걸 받아오는 게 필요하다.


일단.. USB 장치목록으로 받아와서 FLASH DRIVE나 MEMORY READER로 하는게 나을까

아니면 식별자로 USB 메모리로 인식한 것 중에 dd --list 와 결합하는게 나을까 고민중..


[링크 : http://stackoverflow.com/questions/12478006/how-get-device-harddisk-partion-information-qt]

[링크 : http://msdn.microsoft.com/en-us/library/windows/desktop/aa364993(v=vs.85).aspx]

[링크 : http://www.ftdichip.com/.../AN_152_Detecting_USB_%20Device_Insertion_and_Removal.pdf]

[링크 : http://stackoverflow.com/questions/12036077/usb-api-for-windows]

[링크 : http://msdn.microsoft.com/en-us/library/windows/hardware/ff540174(v=vs.85).aspx]

[링크 : http://msdn.microsoft.com/en-us/library/cc542456.aspx]

신고

'Programming > C / Win32 / MFC' 카테고리의 다른 글

혼돈의 카오스 - 교차참조 헤더  (0) 2015.05.11
#ifdef 와 #ifdef ()의 차이  (0) 2015.04.13
winUSB / win32 physical drive  (0) 2014.12.23
printf POSIX 확장 %1$d  (0) 2014.12.09
include guard  (0) 2014.11.05
vc++ vector와 Vector 차이점?  (0) 2014.07.03
Posted by 구차니

댓글을 달아 주세요

printf 에서 POSIX 확장기능인데
즉.. 리눅스나 유닉스만 되려나? 윈도우에서 될거 같진 않은데..

아무튼 몇번째 변수를 출력하냐 라는 기능
다국어 번역이라던가 (어순이 바뀔 경우)
하나의 변수로 여러번 출력할때 라던가 유용할 듯
CharacterDescription
n$ n is the number of the parameter to display using this format specifier, allowing the parameters provided to be output multiple times, using varying format specifiers or in different orders. If any single placeholder specifies a parameter, all the rest of the placeholders MUST also specify a parameter. This is a POSIXextension and not in C99. Example: printf("%2$d %2$#x; %1$d %1$#x",16,17) produces

"17 0x11; 16 0x10"


[링크 : http://en.wikipedia.org/wiki/Printf_format_string]
신고

'Programming > C / Win32 / MFC' 카테고리의 다른 글

#ifdef 와 #ifdef ()의 차이  (0) 2015.04.13
winUSB / win32 physical drive  (0) 2014.12.23
printf POSIX 확장 %1$d  (0) 2014.12.09
include guard  (0) 2014.11.05
vc++ vector와 Vector 차이점?  (0) 2014.07.03
순열생성관련  (0) 2014.06.27
Posted by 구차니

댓글을 달아 주세요

대단한건 아니고 현업에서 작업을 해봤다면 다들 했고 봤을 그 녀석

#ifndef FILENAME_HEADER
#define FILENAME_HEADER 
#endif 

[링크 : http://en.wikipedia.org/wiki/Include_guard]
신고

'Programming > C / Win32 / MFC' 카테고리의 다른 글

winUSB / win32 physical drive  (0) 2014.12.23
printf POSIX 확장 %1$d  (0) 2014.12.09
include guard  (0) 2014.11.05
vc++ vector와 Vector 차이점?  (0) 2014.07.03
순열생성관련  (0) 2014.06.27
2중 포인터 사용이유  (0) 2014.03.19
Posted by 구차니

댓글을 달아 주세요

무슨 차이인지 모르겠다 -_-
일단 정의추적해서 보니..
vector는 _Vector_val을 상속받아 만든 derived class이고
Vector는 순수 클래스 이다.

vector
// TEMPLATE CLASS vector
template<class _Ty, class _Ax> class vector : public _Vector_val<_Ty, _Ax>
{

operations.hpp
template <typename _Tp> class Vector
{
}

+
std::vector 라고 하는것 봐서 스탠다드 라이브러리(?)에 vector가 사용되는 듯.
[링크 : http://hongkwan.blogspot.kr/2013/01/opencv-2-6-example_5.html ]
신고

'Programming > C / Win32 / MFC' 카테고리의 다른 글

printf POSIX 확장 %1$d  (0) 2014.12.09
include guard  (0) 2014.11.05
vc++ vector와 Vector 차이점?  (0) 2014.07.03
순열생성관련  (0) 2014.06.27
2중 포인터 사용이유  (0) 2014.03.19
typeof  (0) 2014.03.11
Posted by 구차니

댓글을 달아 주세요

Junit이나 CUnit 등에서 테스트 시 입력값들을 생성해서
경우의 수대로 입력하기 위해서는 순열을 생성하는게 유리하다.

아무튼..
Unit Test시 Range로 테스트 하려면 순열을 쓰기에는..
int 나 float / double에는 맞지 않는것 같고.. 어떻게 해야하려나? 

신고

'Programming > C / Win32 / MFC' 카테고리의 다른 글

include guard  (0) 2014.11.05
vc++ vector와 Vector 차이점?  (0) 2014.07.03
순열생성관련  (0) 2014.06.27
2중 포인터 사용이유  (0) 2014.03.19
typeof  (0) 2014.03.11
const / pointer  (0) 2014.02.25
Posted by 구차니

댓글을 달아 주세요