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

  1. 2015.06.18 printf 가변인자의 비밀?
  2. 2015.05.19 gcc 컴파일러 -D 옵션
  3. 2015.05.19 setjmp, longjmp
  4. 2015.05.12 inline 함수..
  5. 2015.05.11 혼돈의 카오스 - 교차참조 헤더
  6. 2015.04.13 #ifdef 와 #ifdef ()의 차이
  7. 2014.12.23 winUSB / win32 physical drive
  8. 2014.12.09 printf POSIX 확장 %1$d
  9. 2014.11.05 include guard
  10. 2014.07.03 vc++ vector와 Vector 차이점?
Programming/C Win32 MFC2015. 6. 18. 15:03

느낌적인 느낌으로는 가변인자는 가장 큰 변수형인 void 형을 취할테니..

printf 함수에서 %f를 double로 처리하면서 float에서는 오류가 발생하는 느낌?


아무튼.. 먼가 미묘한 작동을 하네..


[링크 : http://stackoverflow.com/questions/7295066/using-printf-to-print-out-floating-values]

[링크 : http://todayhumor.com/?programmer_11386]

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

void형 포인터 ++  (0) 2015.07.14
가변인자를 다시 넘겨주기  (2) 2015.07.07
gcc 컴파일러 -D 옵션  (0) 2015.05.19
setjmp, longjmp  (0) 2015.05.19
inline 함수..  (0) 2015.05.12
Posted by 구차니
Programming/C Win32 MFC2015. 5. 19. 14:35

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


-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
setjmp, longjmp  (0) 2015.05.19
inline 함수..  (0) 2015.05.12
혼돈의 카오스 - 교차참조 헤더  (0) 2015.05.11
Posted by 구차니
Programming/C Win32 MFC2015. 5. 19. 10:03

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
inline 함수..  (0) 2015.05.12
혼돈의 카오스 - 교차참조 헤더  (0) 2015.05.11
#ifdef 와 #ifdef ()의 차이  (0) 2015.04.13
Posted by 구차니
Programming/C Win32 MFC2015. 5. 12. 14:44

프로젝트에서 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
혼돈의 카오스 - 교차참조 헤더  (0) 2015.05.11
#ifdef 와 #ifdef ()의 차이  (0) 2015.04.13
winUSB / win32 physical drive  (0) 2014.12.23
Posted by 구차니
Programming/C Win32 MFC2015. 5. 11. 12:49

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

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

수많은 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
#ifdef 와 #ifdef ()의 차이  (0) 2015.04.13
winUSB / win32 physical drive  (0) 2014.12.23
printf POSIX 확장 %1$d  (0) 2014.12.09
Posted by 구차니
Programming/C Win32 MFC2015. 4. 13. 16:42

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

현상으로만 봐서는..

#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
winUSB / win32 physical drive  (0) 2014.12.23
printf POSIX 확장 %1$d  (0) 2014.12.09
include guard  (0) 2014.11.05
Posted by 구차니
Programming/C Win32 MFC2014. 12. 23. 09:24

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
printf POSIX 확장 %1$d  (0) 2014.12.09
include guard  (0) 2014.11.05
vc++ vector와 Vector 차이점?  (0) 2014.07.03
Posted by 구차니
Programming/C Win32 MFC2014. 12. 9. 11:07
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
include guard  (0) 2014.11.05
vc++ vector와 Vector 차이점?  (0) 2014.07.03
순열생성관련  (0) 2014.06.27
Posted by 구차니
Programming/C Win32 MFC2014. 11. 5. 15:21
대단한건 아니고 현업에서 작업을 해봤다면 다들 했고 봤을 그 녀석

#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
vc++ vector와 Vector 차이점?  (0) 2014.07.03
순열생성관련  (0) 2014.06.27
2중 포인터 사용이유  (0) 2014.03.19
Posted by 구차니
Programming/C Win32 MFC2014. 7. 3. 13:38
무슨 차이인지 모르겠다 -_-
일단 정의추적해서 보니..
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
순열생성관련  (0) 2014.06.27
2중 포인터 사용이유  (0) 2014.03.19
typeof  (0) 2014.03.11
Posted by 구차니