?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄


#include <stdio.h>

int main() {

   const int  LENGTH = 10;
   const int  WIDTH = 5;
   const char NEWLINE = '\n';
   int area;  
   
   area = LENGTH * WIDTH;
   printf("value of area : %d", area);
   printf("%c", NEWLINE);

   return 0;
}


#include <stdio.h>

#define LENGTH 10   
#define WIDTH  5
#define NEWLINE '\n'

int main() {

   int area;  
  
   area = LENGTH * WIDTH;
   printf("value of area : %d", area);
   printf("%c", NEWLINE);

   return 0;
}


차이점과 OO방법을 더 많이 사용하는 이유





  • profile
    ST 2016.02.17 11:58

    const 와 #define의 차이점

    const 로 선언하게 되면 변수의 값을 더이상 바꿔줄수 없게 된다.

    #define으로 선언시 왼쪽의 값을 오른쪽의 값으로 치환 해주게 된다.

    -- #define을 더 많이 사용하는데 const와 달리 #define은 값을 바꿔주려 할때 코뒤 윗부분의  그 문장에서만 치환 할 값을 바꿔주면 되기 때문이다. 

  • profile
    구알구엔 2016.02.17 18:48

    차이점

    첫번째는 const 상수로 상수값을 미리 정해서 수정할 수 없도록 하는 것이며 두번째 전처리지시자는 정의한 단어를 사용할 경우 해당 값으로 치환하는 역할을 합니다.

    사용 빈도

    두번째 전처리지시자를 많이 사용합니다. 이유는 함수를 벗어날 경우 사용할 수 있으며 추가적으로 메모리를 소모하지 않는다.

  • profile
    Raptor,Jung 2016.02.18 11:38
    OK!!!!
  • ?
    미리내 2016.02.20 16:01
    #define
    - #define은 컴파일 전처리단계에서 글자만 치환해 주는 방식
    -사용법: #define 상수명 값
    -주의점:#define을 사용하고 끝에 세미콜론(;)을 붙이면 안된다.
    세미콜론의 값도 치환이 되어 결과에 영향을 미치기 때문이다.

    const
    -사용법: const 자료형 상수명 = 상수;


    - 상수형을 선언해주는 기능은 같으나, const에서는 자료형을 함께 저장해 줄 수 있다는 특성이 있다.
    - 꼭 #define을 써야하는 상황이 아니라면 const를 사용하는 것이 좋다.
    그렇기 때문에 const를 많이 사용한다
  • profile
    yjh 2016.03.15 14:40
    간단한 차이점은 const는 C++ 출범당시 나온 방식이다.

    #define 을 선언하면 오른쪽 값으로 치환을 해주고 const 는 치환해주지 않는다.

    #defie보다 const를 더 많이 사용하는 이유는 추가적인 메모리 소모를 줄이기 위해서 입니다.

    #defie 은 치환을 해주므로 추가적인 메모리를 소모하기 때문이다.
  • ?
    다이노마트 2016.03.16 17:16

    const를 사용하여 선언한 변수의 값은 초기화 이후엔 그 값을 변경할 수 없다.


    define은 symbolic 상수로 precompile 과정에서 프로그램 내 해당 심볼을 정의한 값으로 대체해 준다.


    추후에 상수 값을 변경해야 할 경우 const를 사용하여 만든 상수는 그 값을 수작업으로 모두 변경해 주어야 하지만 define의 경우 정의된 상수 값 하나만 변경하여도 됨


  • ?
    SSS 2016.03.16 17:26

    const와 #define 차이점

    - const를 선언하게 되면 변수가 상수로 바뀌어 더이상 변수에 있는 값을 바꿀 수가 없게된다.

    - #define을 선언하게 되면 지정한 이름을 사용할 경우 해당 값으로 치환한다.
    - #define 같은 경우 컴파일 이전에 전처리 과정이 이루어져서 두 종류의 처리시기 차이가 존재한다.


    #define 보다 const를 더 많이 사용하는데,  #define 같은 경우 컴파일을 하기 이전에 전처리기에서 먼저 기호 이름이 아닌

    지정한 값으로  바뀌고 컴파일러로 넘어가기 때문에 코드에 기호 이름이 등장한 횟수만큼 일을 하게되어 코드가 길어지면 일을 상당히 많이하게 된다.

  • ?
    BlackBindy 2016.03.16 19:31

    const 와 define 차이점은


    const는 변수의 값을 지정시 더이상 변수의 값을 변경이 불가능하고


    define는 왼쪽의 값을 오른쪽으로 치환시켜준다.


    코스트 보다 디파인이 메모리를 더잡아먹기에 (치환) 보통 const를 더많이 사용한다.

  • ?
    타도SBS 2016.03.17 15:52
    차이점 : const 키워드는 변수를 상수화시키는 기능을 한다. 매크로상수 #define은 컴파일 이전 전처리기에서 #define 뒤에 단어 혹은 문장을 그 뒤에 명시한 단어 혹은 문장으로 바꾸어준다. 즉, 단순 특정 단어를 어떠한 값을 지니는 매크로상수로 표현하는 것 뿐만이 아니라 다양한 의미를 내포시킬 수 있다.
    OO방법을 더 많이 사용하는 이유 : const를 사용하는 경우와 #define을 사용하는 경우는 그 사용처에 따라 누가 더 많이 사용하냐는 것을 논할 수 없는 부분이지만, 위의 코드와 같이 특정 변수에 대해 또는 값에 대한 변경이 이루어지지 않도록 방지하는 경우 소스코드 전체적인 범위에서는 매크로 변수인 #define을 사용하는 편이고, 세부적으로 스코프'{ }' (중괄호) 단위에서 특정 변수를 상수화시킬 때는 const키워드를 사용하는 편이다.
  • ?
    설계실 2016.03.17 16:03

    #define : 컴파일 전처리단계에서 글자만 치환해 주는 방식. 상수는 일반적으로 대문자를 사용함.

    const    :  const의 정의대로 상수화를 시킨다.

    이 둘의 차이점은, const의 경우 디버깅 변수 심볼 테이블이 생성되지만 #define은 생성되지 않는다.

    이 때문에 const의 경우 변수를 상수화 하는 것이기 때문에 테이블에서 변수 정보를 확인가능합니다.

    때문에, 디버깅시에 const를 사용한 경우 데이터 확인이 가능.

    테이블을 생성하지 않는 #define은 확인 할 수 없다.

    변수의 경우에는 const를 사용하는 것이 좋다.

  • profile
    Koala 2016.03.17 17:15

    const 자료형 변수명

    - const로 지정된 자료형은 값을 변경할수 없습니다.


    #define 식별자 'token string'

    - #define으로 정의된 지시문은  컴파일러가 소스파일에서 발생하는 식별자에 따라 토큰스트링으로 대체합니다.


    #define 전처리문을 더 많이 사용합니다.

    - 프로그램 수행시 유지보수에 용이 하고, 큰 프로그램일 경우, 업데이트가 간편합니다.

  • ?
    손별명 2016.03.18 15:13
    const vs #define
    const : const와 함께 변수선언하게되면, 변수값을 변경할 수 없게 된다.
    #define 왼쪽의 값을 오른쪽의 값으로 치환한다.

    winner : #define

    #define은 코드 맨 위쪽에 표시되기에, 전체 코드를 뒤져가며, const변수를 찾는 것보다 윗부분만 간단하게 수정하는 것이 더 쉽기 때문이다.
  • ?
    Basement 2016.03.18 17:28
    두가지 다 상수화 시켜서 사용하려는 것이다.
    차이점은 const의 경우 디버깅 변수 심볼 테이블이 생성되지만 #define은 생성되지 않는다.
    const를 더 많이 사용하는데 디버깅시 데이터 확인이 가능하기 때문이다.
  • ?
    silverash 2016.03.26 21:53

    1. const 함수 : 값 변경 불가능하게 막음

       #define 전처리기: define에서 정의한 단어를 사용하면, 정의 값으로 치환함 그리고 main 함수를 제외한 곳에서도 사용가능함.

    2.경우에 따라 다름

  • ?
    Eldis 2016.05.12 16:17

    #define은 값의 치환이 이루어질뿐이지만 const는 데이터 타입을 가지게 된다
    const를 많이 쓰는데 이유는 const는 디버깅이 가능하고 #define은 불가능하므로
    const를 쓰는것이 안전하기때문이다

  • profile
    Jazzlove 2016.06.16 15:07

    차이점은 바꿀수 있느냐 없느냐의 차이고


    밑에 #define을 더 많이 쓰는 이유는 고치기 편리하기 때문입니다


  • profile
    고갱 2016.06.16 16:11

    const 는 변수를 상수처리해주는 명령어로 아무나 함부로 const 선언된 변수에 접근하지 못하도록 만들어주는 역할을 합니다. 보통 바뀔일이 별로 없는 변수나 함수에 사용하는걸로 알고있습니다.

    #define은 말그대로 변수를 정의해주는 것으로 보통 메인함수전에 전역변수로 고정된 값을 지정해줄 때 사용됩니다.

    위에서볼때 차이는 메인함수 밖과 안에 선언을 했다. 정도가 있는것 같습니다.

    아무래도 위의 예에서는 #define 을 더 많이 사용할것 같습니다. 하지만 const도 포인터를 사용할때 유용하다고 생각합니다.

  • ?
    FEDY 2016.10.18 16:25
    const는 변수를 상수화 시키는 것이라, 변수가 가진 값이 변경이 안된다. 포함된 중괄호 속에서만 사용가능.
    define은 변수랑은 약간 다른 것. 컴파일시 해당 이름을 가진 것에 오른쪽 값을 대입하는 형식이다.
    마찬가지로 소스 내에서 직접 값을 변경은 되지만, 중간에 변경은 안된다.(애초에 컴파일러가 바꾸는 거니까)

    쓰는건 const를 많이 쓸것같다. 아직은 소스코드가 짧지만, 나중에 가면 길어질테고, define은 좋긴하지만 많아지면 복잡해지고 소스코드가 엉킬것같다.
    따라서 해당 지역에서만 쓸수 있는 const 가 낫다고 본다
  • profile
    시공이 2017.03.20 20:51

    const 는 해당 변수의 값을 상수화 시키는 것으로 변수를 상수처럼 사용할 수 있으나 배열의 크기같은 상수가 들어가야할 곳에 사용은 불가능 하다.


    #define 은 컴파일 전 왼쪽 문자를 오른쪽 코드로 치환하는 방법으로 코드가 길거나 사용 빈도수가 많아지면 컴파일 시 시간을 많이 잡을수도 있다.

  • profile
    Bae 2017.04.11 21:20
    심볼릭상수란 : 변수를 상수화 시켜서 사용하는 것.
    const는 변수값을 초기화하면 값이 고정되어 변경할 수 없다.
    define은 컴파일 전 지정한 값으로 치환해준다.

    define이 치환하는 과정에서 메모리 소모가있다. 긴 코드에서는 const를 더 많이 사용한다.