change qmake version

change qmake version 
$ export QTDIR=/qtdir/Qt/5.7/gcc_64
$ export PATH=$QTDIR/bin:$PATH
$ export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

/qtdir = installed qt path

 qmake --version

[VMware workstation] solution - disable intall vmware tools (ubuntu)

[VMware workstation] solution - disable intall vmware tools (ubuntu)

1. open terminal$sudo apt-get install open-vm-tools-desktop


2. restart vmware

C Language - extern ?

Extern
- The extern keyword declares a variable or function and specifies that it has external linkage.

C++ Shift operator(KO)

Shift operator- cout, cin 쓸때 앞이나 뒤에 붙이는 연산자
- 표준 라이브러리에 std라는 namespace에 cout이나 cin에 관련된 클래스(istream, ostream)
- C++에서는 쉬프트 연산자도 연산자 오버로딩이 가능


Shift operator overloading
-----------------------------
int main()
{
    VALUE val(2,3); 
    std::cout << val;
    return 0;
}


1. VALUE class show x and y value.
2. create val Object. after, std::cout print val .

Error : 
cout : - possible normal data type printing
         - impossible object of user type

-표준 std의 ostream 클래스에서도 쉬프트 연산에 대한 오버로딩이 정의 되어 있지 않음
따라서,  표준 라이브러리로 객체를 출력하는 일 불가능

-> Solution
overloading of member fucntion

cout is cout.operator

cout.operator<< (val)


val 객체 인자값을 받을 수 있도록 cout 객체에는 operator<< 연산자를 오버로딩 시키면 가능


class VALUE{  

private:  
    int iX;
    int iY;  
public:  
    VALUE(int x=0, int y=0):iX(x), iY(y){}  
    friend ostream& operator<<(ostream& os, const VALUE& val);  
};  
  
ostream& operator<<(ostream& os, const VALUE& val)  
{  
    os<<"["<<val.iX<<", "<<val.iY<<"]"<<endl;   

    return os;  
}  
  
int main(void)  
{  
    VALUE val(2, 3);  
    std::cout<<val;  
    return 0; 
}

member func overloading : CHANGE std::cout<<val; to operator(std::cout, VALUE); 

NO logical problem. 

How to use #ifdef to C/C++

example
int testfunc(int x, int y)
{
#ifdef  _DEBUG
      printf("x=%d, Y=%d", x,y);  // if x=1, y =2 
#endif
   return  (x * Y) ;
}

if debug mode
#define _DEBUG "DEBUG"

print x=1, Y=2
after return


if release mode,
not print
return

C/C++ Data type byte range


data type

data type  byte

unsigned long       DWORD
int                        BOOL;
unsigned char       BYTE;
unsigned short      WORD;
unsigned int          UINT;

char            1 byte -128 ~ 127
unsigned char 1 byte 0 ~ 255

int8                 1 byte -128 ~ 127

int16         2 byte -32,768 to 32,767

unsigned int 2 byte -32,768 to 32,767

(signed) short (int)        2 byte -32,768 to 32,767
unsigned short (int)         2 byte 0 ~ 65,535

int32                        4 byte -2,147,483,648 ~ 2,147,483,647

(signed) int                4 byte -2,147,483,648 ~ 2,147,483,647
unsigned int                4 byte 0 ~ 4,294,967,295

(signed) long (int)        4 byte -2,147,483,648 ~ 2,147,483,647
unsigned long (ing)          4 byte -2,147,483,648 ~ 2,147,483,647
int64                        8 byte -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
float                                 4 byte 3.4E +/- 38 (7 digits)
double                        8 byte 1.7E +/- 308 (15 digits)
long double                8 byte 1.2E +/- 4932 (19 digits)


Apartment Buying Guide 2025: Shocking Red Flags You Should NEVER Ignore!

 🏙️ Apartment Buying Guide 2025: Shocking Red Flags You Should NEVER Ignore! 🚨 Are you thinking about buying an apartment in 2025? 🏢  It’...