TIL 23.4.17//오늘 배운 것. c++에서 별칭을 사용하는 방법에 관하여.

알고리즘 코딩테스트 코드들을 접하다보면 작성자들이 다르다보니 long long을 ll로 표현하는 방법에 있어서 두가지 차이점을 접하게 되었다.

 

 -첫번째로 #define ll long long 형태로 ll을 사용하게 하는 방법이 있다. 

이 방법에서 유의해야 할 부분은 #define ll long long; 형태로 작성하지 않도록 해야한다는 것이다. 

맨 마지막에 ;을 써놓고 뭐가 문제길래 인텔리센스 기능이 제대로 작동하지 않는지에 대해서 몰라서 한참을 찾았던적이 있따. 

 

 

-두번째로 typedef long long ll; 이렇게 작성하는 방법이 있는데, 지금까지는 #define 형태의 전처리지시문이 익숙해서 typedef에 대해서 많이 접해보지 못해서 내가 사용하여야 할때는 사용하지 못했지만, 이번에 접한 코드에서 이러한 형태로 제시를 해주어서 차이점에 대해서 검색해보았다. 

 

이와 같은 내용이 #define ll long long 과 typedef long long ll;의 차이점에 대한 내용이고, 이 내용을 보았을때는, 

#define X first

#define Y second 

형태의 사용이 아닌이상, ll을 long long을 대신하여서 사용할때는

typedef long long ll; 을 사용하는 것이 좋을것 같다는 생각이 든다. 

이에 익숙해지도록 노력해보자.

그리고 전처리지시문 #define을 사용할때에는, 

#define ll long long 형태로, 내가 쓰고싶은 별칭을 먼저, 그리고 타입을 나중에 작성하고, ; 을 제외하는데

typedef 을 사용할때에는

 

typedef long long ll; 형태로, 원래의 타입을 먼저 long long이라고 작성해주고, 그리고 별칭인 ll을 써주고, 그리고 나서 맨 마지막에 ; 을 빼먹지 말아야 한다는게 #define을 사용할때와는 거의 모두 반대인 느낌으로 작성해야한다. 

이와 같은 내용을 이해하고 혹시나 typedef를 사용할때 헷갈리지 않게 주의하고, 

#define을 사용할때에는 맨 마지막에 ; 를 쓰지 않기 위해 주의하도록 하자. 

 

+++++++++++++++++++++++++

추가적으로 오늘 또 접한 형태로, 

 

using ll=long long; 형태가 있다. 

 

=================

 

질문해보니 다양한 방법이 있었다. 

일단 내가 접한 것들만 고려해보면, 

 

typedef long long ll;

#define ll long long

using ll=long long;

형태의 3가지다. 

이중에서 나는 typedef long long ll;

형태를 쓰려고 하고있다. 일단 이거 하나에라도 먼저 익숙해지도록 하자. 

 

  Comments,     Trackbacks