일부 서버에서는 특정 라이브러리를 포함해야하고 다른 서버에서는 포함하지 않아야하는 C++ 코드가 있습니다. bjam을 사용하여 코드를 빌드합니다.헤더 파일을 C++에 선택적으로 포함하십시오.
코드 예제 :
if server in server_list:
-llibrary
else:
...
일부 서버에서는 특정 라이브러리를 포함해야하고 다른 서버에서는 포함하지 않아야하는 C++ 코드가 있습니다. bjam을 사용하여 코드를 빌드합니다.헤더 파일을 C++에 선택적으로 포함하십시오.
코드 예제 :
if server in server_list:
-llibrary
else:
...
헤더 파일 포함이 시간을 실행하지 컴파일 시간 활동 : bjam을 사용
if server in server_list:
include <header-file.h>
int function();
else:
int function();
그리고 빌드시
. 같은사용 온도는 C와 C에서
#define SERVER_IN_LIST
#ifdef SERVER_IN_LIST
#include<...>
#endif
그리고 Jam 파일에서 다른 경우 이것을 어떻게 지정합니까? – Rajs123
++ #
가 pre-processor 지시입니다로 시작하는 모든 라인을 위해서 #ifdefs 경우에 따라서는 사용할 수 없습니다. 전처리 기는 소스 코드 파일을 컴파일하기 전에 구문 분석하는 텍스트 구문 분석기입니다. #include
, #define
및 #ifdef
과 같은 특정 지시어를 인식하지만 일반 C++ 코드는 마치 텍스트 인 것처럼 취급합니다. 이러한 이유로 일반 C++ 코드를 사용하여 프로세서 전 처리기 지시문의 해석을 변경할 수 없습니다.
의 예를 살펴 보자 : 위의
if (x == 4){
#include "x4.h"
}
다음은 if
문 및 중괄호는 C++ 때문에 사전 프로세서에 의해 무시됩니다 코드의 일부이기 때문에 잘못을. 전 처리기는 곧바로 진행하여 #include
지시어를 해석하면 x4.h
의 내용이 파일의 해당 위치에 붙여 넣어집니다.
이 방법을 쓰는 올바른 방법은 #if
또는 #ifdef
과 같은 조건부 전 처리기 지시문을 사용하는 것입니다. 예를 들어 ...
#ifdef INCLUDE_X4
# include "x4.h"
#endif
이 코드의 들여 쓰기는 선택 사항입니다.
사전 처리기 지시문에 대한 자세한 내용은 here을 참조하십시오.
은'# define'을 사용합니다. –
특정 서버에서 실행될 때만 어떻게 정의합니까? – Rajs123
@ Rajs123 다른 라이브러리가 필요한 다른 서버에서 실행중인 경우 다른 실행 파일을 빌드하거나 필요에 따라로드하는 DLL을 사용해야합니다. (나는 당신이 파이썬에서'import'와 비슷한 것을 기대하고 있다고 생각합니다 .C++은 그런 식으로 작동하지 않습니다.) – molbdnilo