루아의 입장에서 보는 함수는 문장과 수식을 추상화 하기 위한 주요 기능 중 하나라고 한다. 이렇게 말하면 이게 무슨 말이지? 라고 갸우뚱 한다면, 당신은 정상이다. ... 많이 접해보는 이야기가 아니기 때문일 것이다. : ) C의 함수와 동일한 개념이라고 봐도 무리가 없다. 몇가지 다른 점은 있지만 나중에 정리하도록 하고, 이 원서에는 어떻게 나왔는지 확인해 보자. 원서 확인 : http://www.lua.org/pil/5.html 재미있는 규칙이라면, 루아 함수에게 전달되는 인수들은 ( )
전체 글 검색 결과
이번 항목은 간단하여 바로 질문을 들어가 본다. 1. 두개의 변수를 받아서 일반적인 < 비교 연산자를 이용해서 더 큰 값을 찾아내는 간단한 max를 작성해보고 함정이 무엇인지 찾아 보라. .. 간단한 max 함수를 inline 화 시켜서 사용 하면 된다. 항목 2. #define을 쓰려거든 const, enum, inline을 떠올리자. 함정을 피해가기 위한 조언으로는 변수의 괄호를 잊지 말고 해 줘야 할 것 식 전체에 괄호를 잊지 말고 씌워 줄 것 다중 변수 계산을 조심 할 것 이름 바꿔 치기를 조심 할것 2. 전처리 매크로로 만들 수 없는 것은? 재귀 매크로가 없다는 것 메크로 주소가 없다는 것 매크로는 디버깅해서 쫒아 갈수 없다는 것 C++ 표준 16.3/8의 주석 7을 인용해 본다면 다음과 같이 ..
Effective C++ 3판에서 봤던 내용이 기억 나는데, 전처리 매크로(#define)가 위험하기 때문에 C++ 스타일을 사용하자고 제안했던 것을 볼 수 있다. 일전에 동기인 강일이형이 보여 주었던 전처리 매크로(#define)의 문제점을 통해서 확신이 들었다. 이번 항목은 이런 전처리 매크로를 아직 쓰는 이유와 어떻게 대처 할 수 있는지에 대해서 이야기 하고자 한다. 1. 헤더 꼬임 방지하기 즉 헤더가 꼬이는 것을 방지하는 것을 위해서 사용 한다. #ifndef __TEST_HPP__ #define __TEST_HPP__ /* 이 내부는 __TEST_HPP__ 가 없을 때만 읽혀진다. */ #endif //__TEST_HPP__ 2. 전처리 기능 접근하기 좀 편하게 진단 코드를 사용 할 수 있기 위..
이번 항목의 네스티드라고 해서 무슨 말이지? 하고 잠깐 생각 했었다. 인터넷에서 검색을 해보니, "함수가 보이는 범위를 특정 함수안에서만 보이는 함수" 를 nested function 이라고 한다. 좀 생소한 느낌이 들었지만, 이런 기능이 C++ 에서도 있다는 것을 알게 되었다. 바로 클래스 내에 있는 클래스, 영어권에선 이런 클래스를 nested class 라고 한다. 우리나라에선 지역 클래스라고 하는거 같지만 이 책을 읽고 전혀 다른 의미인 것을 알게 되었다. 그렇다면 이번 항목의 주요한 질문은 무엇인가? 1. nested class는 무엇이며, 어떤 이유에서 유용하게 쓰일 수 있나? 우선 nested class 를 코드로 보여 준다면 아래와 같다. // 항목 33 : nested function 의..
자기 자신을 가리키는 포인터를 리턴하는 함수를 작성할 수 있는가? 그렇다면 그런 함수를 작성 하는 이유는 무엇인가? .. 질문은 이렇게 시작한다. 나에게 큰 시련을 안겨줄것에 대한 운명은 전혀 예상치 못했다. 이렇게 막히게 될 줄이야.. 질문을 시작 하면 1. 함수에 대한 포인터는 무엇인가? 어떻게 사용 될 수 있을까? 개인적으로 생각 하자면, 인공지능에 사용 되면 무척 편리하다는 생각을 했었다. 각 상태에 맞게 함수를 붙여 주면서 그 객체의 인공지능이 상태에 맞게 스위칭되는 것을 외부에서 관리할 수 있어, 인공지능 매니저가 인공지능 함수를 관리해서 쓴다면 좋을거 같다. 다른 대안으로는 STL 컨테이너 검색 및 변경 작업에 쓰면 좋을 듯 싶지만, 이건 함수 오브젝트가 있는 이상 ... 그다지 유용하지 않..
이 문제는 매우 간단한 사실을 알지 못한채 생겼던 문제였다. 1개의 솔루션 내에 3개의 프로젝트가 있었다. 3개의 프로젝트 A_project ... C_project 라고 했을 때. A_project 에는 pragma comment(lib, "../lib/lua5.1.lib") B_project 에는 pragma comment(lib, "../loost/lib/loost.lib") C_project 에는 pragma comment(lib, "../lib/lua5.1.lib") 이렇게 작업 하던 중이였다. C 프로젝트로 컴파일 하는 과정중 B 프로젝트의 loost.lib 를 찾을 수 없다는 경고가 나왔다. 아무리 상대 주소를 생각해 봐도 B 프로젝트 입장에서 보면 ../loost/lib/loost.lib ..
최근댓글