Eclipse에서 자동 빌드 끄기


저 사양 PC거나 소스가 많을 경우 Build Auomatically를 활성화 시키면 Eclipse가 느리게 동작하는 경우가 있다.

수동으로 빌드 시키는 방법이 있으니 Eclipse가 느리게 동작 하는 경우 자동 빌드를 꺼보자





자동 빌드 끄기 (Build Automatically Disable) 방법 remote system explorer operation


상단 메뉴에 Project -> Build Automatically 누른다.









수동 빌드 하는 방법 remote system explorer operation


상단 메뉴에 Project -> Build ALL  혹은  Ctrl + B 를 누른다.



반응형

Eclipse에서 remote system explorer operation 끄는 방법


Eclipse에서 Remote System Explorer Operation는 원격 프로젝트를 관리하는 plugin이다.

해당 plugin 때문에 저 사양 PC에서 Eclipse가 느리게 동작하는 경우가 있는데

이 기능을 끄는 방법에 대해 알아보도록 하겠다.



Remote System Explorer Operation Disable 방법 remote system explorer operation


상단 메뉴에 Windows -> Preferences 누른다.



Windows -> Preferences -> General -> Startup and Shutdown -> RES UI 체크 해제







Windows -> Preferences -> Remote Systems  -> Reopen Systems view to previous state 체크 해제



반응형

구조체


하나 이상의 변수를 그룹화 하여 새로운 자료형을 정의 하는 것을 구조체라 한다.

구조체 안에 변수는 int, char, 배열, 포인터, 또다른 구조체등 어떤 것이든 상관없다.



구조체 정의/선언 방법


사람이라는 구조체를 정의 해보자.

구조체 안에 담아야 할 변수는 이름과, 나이 두가지만 정의 해보도록 하겠다.

struct human

{

    char name[50];  // 이름

    int  age;       // 나이

};


구조체가 위와 같이 정의 되었으니 선언해서 사용할 준비를 해보자.


...

int main(void)

{

    struct human jack, mike;

    ...

    return 0;

}


위와같이 human 구조체를 jack, mike 라는 변수 선언을 하므로써 구조체 사용 준비가 완료 되었다.

아래는 구조체 정의와 동시에 선언 방법을 알아보겠다.


struct human

{

    char name[50];  // 이름

    int  age;       // 나이

} jack, mike;



구조체 변수 사용 방법


구조체 선언 변수 jack에 있는 name과 age 값은 어떻게 접근 가능 할까?

jack.age = 10;


jack 뒤에 . 을 붙인뒤 구조체 안에 정의 되어 있는 변수 age를 접근 했다.

. 를 '멤버 연산자' 혹은 '맴버 접근 연산자'라고 부른다.




구조체 정의 및 선언, 사용방법 내용이 담긴 소스를 보면서 마무리 하겠다.

#include <stdio.h>

#include <string.h>


struct human

{

    char name[50];  // 이름

    int  age;       // 나이

};


int main()

{

struct human jack, mike;


jack.age = 10;

mike.age = 11;


memset( &jack.name, 0x00, sizeof(jack.name) ); // 이름 변수 초기화

memset( &mike.name, 0x00, sizeof(mike.name) ); // 이름 변수 초기화


strcpy( jack.name, "jack" );

strcpy( mike.name, "mike" );


printf(" %s is %d year old \n", jack.name, jack.age );

printf(" %s is %d year old \n", mike.name, mike.age );

}


반응형

포인터와 const


const는 변수를 상수화 시키는 키워드다.

변수를 상수화 시킨다는 말은 변수의 값이 변경 되지 않게 한다는 뜻이다.

한번 초기값이 설정된 변수 값은 변수 사용 범위 내에서 계속 변하지 않는다.

포인터에서 const는 두 가지 의미를 부여 할 수 있다.

하나는 포인터가 가리키는 값을 상수화 하는 것이고 다른 하나는 포인터 변수값 즉 주소 값을 상수화 시키는 것이다.



포인터가 가리키는 값 상수화 방법


결론 부터 보자

int value = 10;

const int *a = &value;


int 앞에 const가 선언되면 포인터가 가리키는 변수가 상수가 되어 아래와 같은 동작을 한다.


int value = 10;

const int *a = &value;

*a = 30; //오류 발생

value = 30; // 변경 가능


value 변수값을 직접 변경이 가능하나 포인터의 값을 변경 하려고 하면 오류가 발생한다.



포인터 상수


결론 부터 보자

int value = 10;

int value2 = 20;

int const *a = &value;


int 뒤에 const가 선언되면 포인터가 상수가 되어 아래와 같은 동작을 한다.


int value = 10;

int value2 = 20;

int * const a = &value;

a = &value2; //오류 발생

*a = 30; // 변경 가능


포인터가 가리키는 value 변수값을 포인터값을 통해 변경이 가능하나 포인터를 변경 하려고 value2의 주소값을 대입하면

오류가 발생한다.





#include <stdio.h>


int main()

{

int value = 10;

int value2 = 20;

int * const a = &value;

const int *b = &value;


//포인터 상수 결과

//=======================================

a = &value2; // 오류 발생 (1)

*a = 30; // 변경 가능

//=======================================


//포인터가 가리키는 값 상수 결과

//=======================================

*b = 30; //오류 발생 (2)

value = 30; // 변경 가능

//=======================================

}


위의 예제를 컴파일 하면 다음과 같은 오류가 발생 한다.


오류 발생 (1) ---> error C3892: 'a' : const인 변수에 할당할 수 없습니다.

 오류 발생 (2) ---> error C3892: 'b' : const인 변수에 할당할 수 없습니다.


반응형

'프로그램 > C' 카테고리의 다른 글

[C] 구조체 배열과 포인터  (0) 2017.07.31
[C] 구조체  (0) 2017.07.24
[C] Call-By-Value와 Call-By-Reference  (0) 2017.07.22
[C] 포인터와 배열  (0) 2017.07.19
[C] 시간차이 구하기 ( millisecond 까지.. )  (0) 2017.07.16

+ Recent posts