다음 코드를 봅시다. FOO(x)는 ((x)*(x))로 define이 된 매크로입니다. 그리고 6번째 줄에 FOO(p(0)); 이 있어요. 이것은 어떻게 대치가 될까요? 만약에 위와 같이 대치가 된다면, 어떻게 될까요? p가 2번 호출됩니다. 이것만 보면 이게 굳이 왜. 라는 생각이 드실 수도 있을 거에요. 자. 그러면 질문을 바꿔 봅시다. FOO(u = p(0))은 어떻게 대치가 될까요? 만약에, 이렇게 대치가 된다면 어떨까요? 봐도 모르겠으니, wandbox에서 돌려보겠습니다. operation on 'u' may be undefined. 라고 나옵니다. 음.. 뭔 이야기인지는 모르겠지만, u에 대한 연산이 정의되지 않는다. 정도로 해석을 하면 됩니다. 사이드 이펙트가 있다고 생각해도 무난합니다. 그..
코딩 검색 결과
file 입출력을 다루기 위해서는, 입출력 함수들에 대해서 알고 있어야 합니다. 오늘은 이 중에서 getchar에 대해서 알아보도록 하겠습니다. 이 함수는 getc(stdin)을 호출한 것과 동일한 역할을 한다고 링크에서 설명을 하고 있어요. getc와 fgetc에 대해서는, 추후에 다시 설명을 할 기회가 있을 듯 싶네요. stdin에서 어떻게 읽어오는지 대략적으로 그림을 그리실 필요가 있어요. 예를 들어, 이런 프로그램이 있다고 생각해 봅시다. 저는 age와 성별을 받았습니다. 그렇게 해서, 나이와 성별에 대한 정보를 출력하기를 기대하고 있어요. 그런데, 실제로는, age에는 23이 들어갔는데 gen에는 M이나 F가 저장되지 않았다는 것을 알 수 있어요. 예를 들어 2를 입력하고 엔터를 쳤다고 해 봅시..
오늘은 중복된 결과를 제거하기 위해 mysql에서 많이 써먹는 distinct 절에 대해 알아보도록 하겠습니다. world에서, country 테이블을 생각해 봅시다. 나라는, Continent라는 컬럼도 포함할 겁니다. 예를 들어, 아시아, 유럽, 북아메리가 등등. country에서, Continent만 뽑아 봅시다. 그러면 쿼리는 위와 같이 작성하면 됩니다. 그런데, 이것은 country에 있는 레코드를 모두 뽑아냅니다. 물론, 속성은 Continent만 뽑아내겠지만요. 예를 들어서, 영국과 프랑스가 있다면, "Europe" 이라는 것은 2번 이상 뽑힐 겁니다. 그런가요? 저는, country 테이블에 있는 나라들이 속해있는 대륙의 갯수만 알고 싶습니다. 즉, Europe이 2번 나온다면 1번만 세야..
fwrite, fread, fgets. 이 셋의 공통점은 무엇일까요? 링크의 설명에서 보면, 공통적으로 stream 이라는 것이 들어가 있어요. 아. 듣기만 해도 어려워 보입니다. 그리고 stream에 대해서, 공식 문서의 io library에 대한 링크를 보면, 아래와 같은 문구가 있다는 것을 알 수 있습니다. 쉽지 않아 보이는군요. 차근 차근 생각해 봅시다. 우리가 scanf 함수로, "abcde" 라는 것을 입력받았다고 해 봅시다. 그러면, 키보드로부터 받은 "abcde"를 프로그램 A에다가 넘겨줄 겁니다. 그러면 keyboard에서 A로 흘러갔다는 게 조금 와 닿나요? 반대로, "chogahui"를 FILE B에다가 쓴다고 해 봅시다. 그러면 어떻게 해야 하나요? "chogahui"가 A에서 fi..
안녕하세요. 포인터에 대해 다 끝났으니, 파일을 가지고 천천히 놀아보도록 하겠습니다. 이 포스팅에서는 파일을 잘 여는 방법만 익히시면 됩니다. file_name과, mode를 넘겨주면, FILE 구조체의 포인터를 리턴합니다. 그러면 파일을 열고, 그것을 스트림과 연관을 시킨다고 링크에서는 설명을 하고 있습니다. 스트림, 버퍼. 벌써부터 어질어질해 집니다. 이에 대한 것들은 후에, 작성하도록 하겠습니다. 리턴을 하는 게 FILE 포인터인데요. 만약에 파일을 여는 것을 실패했다면, NULL 포인터를 리턴합니다. 이 처리를 잘 해주시면 좋을 듯 싶습니다. 열지도 못했는데 내용을 읽지는 못할 거니까요. 일단, 이 포스팅에서는 3개만 알고 계시면 됩니다. 그리고 뒤에 +가 붙는 경우가 있어요. 추가로 binary..
최근댓글