외부와 입력의 차이점 - 페이지 6

 

일반적으로 전역 변수 가 나쁘다는 사실부터 시작해야 합니다. 그리고 그러한 변수가 많은 파일에서 사용되고 어디에서나 변경할 수 있는 경우 이것은 정사각형에서 악입니다! 따라서 이러한 변수는 항상 상수로 선언되어야 합니다(알고리즘 논리에 영향을 주지 않는 디버깅 목적의 보조 변수에 대해 이야기하지 않는 한).

따라서 상수 전역 변수가 있는 경우 다음과 같은 분명한 결론이 나옵니다. 끝에 괄호 몇 개를 추가하고 이를 함수로 변환하여 이에 대한 구현을 지정할 때 유연성을 얻는 것이 더 쉽지 않습니까? 기능. 그리고 위에서 설명한 MQL의 extern 변수가 불완전하기 때문에 대안이 없습니다.
 
프로젝트가 여러 mq5 파일로 구성된 경우 extern 지정자가 필요합니다(mqh와 혼동하지 마십시오). 이 경우 별도의 파일에 전역 변수 를 선언하는 것이 좋습니다. 프로젝트가 mqh로 구성되고 #include를 기반으로 구축된 경우 extern이 필요하지 않습니다. 사실 이것은 하나의 파일이 여러 개로 분할되기 때문입니다.
 
Vladimir Simakov :
프로젝트가 여러 mq5 파일로 구성된 경우 extern 지정자가 필요합니다(mqh와 혼동하지 마십시오). 이 경우 별도의 파일에 전역 변수 를 선언하는 것이 좋습니다. 프로젝트가 mqh로 구성되고 #include를 기반으로 구축된 경우 extern이 필요하지 않습니다. 사실 이것은 하나의 파일이 여러 개로 분할되기 때문입니다.

예제가 필요합니다. 라이브러리에서 extern을 사용해 보았습니다. 작동하지 않습니다. https://www.mql5.com/en/forum/316795/page2#comment_12259472

 
Igor Makanu :

예제가 필요합니다. 라이브러리에서 extern을 사용해 보았습니다. 작동하지 않습니다. https://www.mql5.com/en/forum/316795/page2#comment_12259472

라이브러리용이 아니라 프로젝트용입니다. 프로젝트는 #include에서 빌드하거나 여러 mq5 파일을 만들 수 있습니다. 여기서 두 번째 경우에는 전역 변수를 다른 파일의 범위에 도입하기 위해 extern이 필요합니다.
 
Vladimir Simakov :
여기서 두 번째 경우에는 전역 변수를 다른 파일의 범위에 도입하기 위해 extern이 필요합니다.

상관없어요, 하지만 예제가 필요합니다. 여기에서 extern을 사용할 위치를 추측할 수 있습니다. - 라이브러리에서 시도했지만 작동하지 않았습니다. extern을 어떻게 사용하는지 보여주세요

 
Vladimir Simakov :
라이브러리용이 아니라 프로젝트용입니다. 프로젝트는 #include에서 빌드하거나 여러 mq5 파일을 만들 수 있습니다. 여기서 두 번째 경우에는 전역 변수를 다른 파일의 범위에 도입하기 위해 extern이 필요합니다.
범위에 들어가는 방법은 무엇입니까? 프로젝트의 mq5 파일은 각각 그 자체이며 어떤 식으로든 연결되어 있지 않습니다. 각 파일은 독립적으로 컴파일됩니다.
 
전체 농담은 extern이 단순히 필요하지 않다는 것입니다. 모든 프로젝트 파일의 전역 수준에서 선언된 변수는 모든 파일에서 사용할 수 있습니다. 무엇 때문에? 제작자에게 질문합니다.
 
Vladimir Simakov :
전체 농담은 extern이 단순히 필요하지 않다는 것입니다. 모든 프로젝트 파일의 전역 수준에서 선언된 변수는 모든 파일에서 사용할 수 있습니다. 무엇 때문에? 제작자에게 질문합니다.

extern 변수가 사용되는 모든 *.mqh 파일에서 선언할 수 있습니다.

그러면 이러한 *.mqh 파일은 전역 변수가 선언된 *.mq5(또는 기타 *.mqh) 파일에 종속되지 않습니다.
이렇게 하면 파일을 다른 프로젝트에서 사용할 수 있으므로 코드 재사용 이 증가합니다.

 
Ilyas :

extern 변수가 사용되는 모든 *.mqh 파일에서 선언할 수 있습니다.

그러면 이러한 *.mqh 파일은 전역 변수가 선언된 *.mq5(또는 기타 *.mqh) 파일에 종속되지 않습니다.
이렇게 하면 파일을 다른 프로젝트에서 사용할 수 있으므로 코드 재사용 이 증가합니다.

감사합니다. 이제 논리를 이해했습니다. 원래 C++의 extern과 같다고 생각했습니다.
 
Vladimir Simakov :
감사합니다. 이제 논리를 이해했습니다. 원래 C++의 extern과 같다고 생각했습니다.

비슷하지 않습니까?