제발, 아래의 코드는 무엇을 말해 줄 수 있습니까?C의 코드 중간에 포함되는 것은 무엇입니까?
...code...
#include file.h
...code...
각 파일의 시작을 포함하는 데 사용되었습니다. 나는 전에 이것을 본 적이 없으며 인터넷에서도 아무것도 찾을 수 없었습니다.
제발, 아래의 코드는 무엇을 말해 줄 수 있습니까?C의 코드 중간에 포함되는 것은 무엇입니까?
...code...
#include file.h
...code...
각 파일의 시작을 포함하는 데 사용되었습니다. 나는 전에 이것을 본 적이 없으며 인터넷에서도 아무것도 찾을 수 없었습니다.
#include
은 주어진 파일을 인수로 가져 와서 현재 파일의 내용을 덤프하는 사전 처리기 지시문입니다. 일반적으로 이것은 헤더 파일의 commons 함수에 대한 정의를 포함하기 위해 사용되지만, 그렇게 사용하지 않아도됩니다.
파일의 시작에만 국한되지 않지만이 헤더에 선언 된 변수, 매크로 또는 함수는 같은 파일에 있더라도 include 문 앞에 사용할 수 없습니다.
모든 사람이 당신에게 #include
은 모든 곳에서 사용할 수 있다고 알려주므로 (자신의 로직 라인에있는 경우). 그리고 원하는 경우가 있습니다 #include
번동일 파일. 먼저 X macro wikipage를 읽고 C preprocessor wikipage를 읽으십시오.
그리고 MELT monitor에 구체적인 예가 있습니다 (MELT과 관련 있음).
제가MOM_PREDEFINED_NAMED(
이름
,
ID
,
해시 )
예처럼 라인을 포함하는 predef-monimelt.h (생성) 파일을 MOM_PREDEFINED_NAMED(GET,_9dsak0qcy0v_1c5z9th7x3i,1573018885)
MOM_PREDEFINED_NAMED(HEAD,_47fatww79x6_vh8ap22c0ch,3922245622)
MOM_PREDEFINED_NAMED(web_handler,_7sav6zery1v_24sa6jwwu6c,2339220870)
#undef MOM_PREDEFINED_NAMED
내 monimelt.h 파일 (실제 헤더 파일) 그래서 특히이 외부 포인터와 열거 형을 정의 // declare the predefined
#define MOM_PREDEFINED_NAMED(Name,Id,H) extern momitem_t* mom_named__##Name;
#include "predef-monimelt.h"
/// declare the hash of the predefined as an enum
#define MOM_PREDEFINED_NAMED(Name,Id,H) mom_hashname__##Name = H,
enum {
#include "predef-monimelt.h"
};
내 main.c 파일이 특히 루틴이 포함되어
// if this routine is compiled, we are sure that all predefined hashes
// are unique
const momitem_t *
mom_predefined_item_of_hashcode (momhash_t h) {
switch (h) {
#define MOM_PREDEFINED_NAMED(Nam,Id,Hash) case Hash: return mom_named__##Nam;
#include "predef-monimelt.h"
default:
return NULL;
}
}
하지만, 내 items.c은 predef-monimelt.h
파일 을 두 번 두 번 (미리 정의 된 항목을 만들려면 초기화 등) 자신의 변수를 정의 :
void mom_create_predefined_items (void) {
int nbnamed = 0;
#define MOM_PREDEFINED_NAMED(Nam,Id,H) do { \
mom_named__##Nam = mom_make_item_of_identcstr(#Id); \
mom_named__##Nam->i_space = momspa_predefined; \
mom_register_item_named_cstr (mom_named__##Nam, #Nam); \
nbnamed ++; \
} while(0);
#include "predef-monimelt.h"
} // end of mom_create_predefined_items
// declare the predefined
#define MOM_PREDEFINED_NAMED(Nam,Id,H) momitem_t* mom_named__##Nam;
#include "predef-monimelt.h"
FWIW을, 용융 모니터는 GPLv3에 + 라이센스 소프트웨어가
인클루드 위 아래에 몇 줄을 제시해주십시오입니다! 어쩌면 그것은 함수 선언 전에 나도 몰라. (코드가하는 것은 파일을 포함하고있다. 알다시피, 너는 할 수있다.) – Rizier123
전처리 기는 소스 파일에서 * 아무 데나 * 지시자를 허용한다. 그것들은 첫 줄에'# '과 함께 자신의 줄에있다.), 특정 장소에있을 필요는 없다. 그래서'#include' 지시자는 당신이 익숙한 것을 수행합니다. 그것은 현재 파일에 다른 파일의 내용을 포함합니다. –
파일의 맨 위에 #include와 동일한 작업을 수행합니다. 그것은 단지 다른 장소에서 그것을합니다. 기본적으로 포함 된 파일을 열고 해당 파일의 내용을 #include 문이 차지하는 공간에 복사합니다. –