uchar - 부호 없는 문자, 이것을 루프에 사용하는 이유는 무엇입니까? 그것은 나에게 의미가 없습니다. . . 정수를 사용합니다. 당신은 ulongs와 함께 일하게 될 것입니다. 그것이 새로운 datetime 입니다. . . 그리고 미래 에 그것에 대해 생각 하지 않고 typecast 하면 경고 를 받게 됩니다 . . . 경고를 처리하거나 무시하십시오. 그래도 좋은 것만 바라지 말고 지금 하는 대로 하고 배우고 이해해
stackoverflow에서 게시한 내용은 나에게 의미가 있습니다. 좋은 조언이라고 생각합니다.
내 질문은 작은 변수 유형의 사용과 관련되어 있으므로 uchar는 단지 예일 뿐입니다. uchar는 0에서 255 사이의 8비트 양수 값이므로 0에서 100까지의 루프에 대해 원하는 경우 32비트 정수 대신 8비트 uchar를 사용할 수 있습니다.
8비트 변수 유형이 32비트보다 빠르게 처리되는지 또는 속도가 더 느리거나 같을지, 8비트 값이 RAM이나 디스크 공간을 적게 사용하는지 알 수 없습니다. 이제 우리가 사용할 수 있는 작은 변수 유형이 있으므로 코드 블록의 요구 사항에 맞을 때 사용하는 것과 전체적으로 32비트 정수를 사용하는 것의 장단점을 알고 싶었습니다.
32비트 OS가 4개의 8비트 값을 동시에 처리할 수 있을 거라고 생각했지만 몰랐습니다. 분명히 아닙니다. 이것은 64비트 OS가 더 많은 RAM에 액세스할 수 있다는 사실을 제외하고는 32비트보다 실제로 훨씬 빠르지 않은 이유를 설명합니다. 나는 종종 그것에 대해 궁금했다.
void& 어떻게 사용하나요? 내 말은, DLL에 대한 포인터를 보내야 하는 경우입니다. 도움말 파일에는 이 void 유형을 사용하는 functions 가 있지만 소스의 아무 곳에나 배치하면 컴파일되지 않습니다. 템플릿을 해결 방법으로 사용하려고 했지만 #import 문 내에서 템플릿이 금지되어 있습니다.
단일 유형에 대한 구성을 관리했지만 명시적 유형을 지정하지 않는 한 DLL에 대한 전달 void& 배열 포인터를 구현할 수 없습니다.
int FileReadArray(
int file_handle, // File handlevoid & array[], // Array to recordint start= 0 , // start array position to writeint count= WHOLE_ARRAY// count to read
);
(BTW, 실제로 MQL4 bool의 내부 표현이 무엇인지 확실하지 않지만 Win32 함수 를 int를 반환하는 것으로 선언하고 싶습니다. Win32 함수는 C++ bool이 아닌 BOOL을 반환합니다. BOOL은 Windows 매크로입니다. 4바이트 정수의 경우 값이 1/0인 반면 C++ bool은 단일 바이트입니다. 실제로 4바이트를 반환할 때 함수에서 단일 바이트의 반환 값을 기대하도록 MT4에 지시하면 다음을 수행할 수 있습니다. 가능성은 매우 낮습니다 - 스택 손상으로 끝납니다.)
귀하의 질문이 무엇인지 잘 모르겠습니다. 예를 들어, Win32 API 문서에서는 void*를 사용하여 "이것은 모든 유형의 포인터를 허용합니다. Win32 함수는 메모리 블록이 무엇인지 상관하지 않습니다"를 의미합니다.
정확히. 그러나 MQL4에서는 불가능하고 #import 블록 내에서 템플릿 사용이 허용되지 않는 것 같습니다. 따라서 winapi와 함께 추가 구조 를 사용하면 새 유형이 필요할 때마다 #import 선언을 수동으로 업데이트하게 됩니다. 수입품을 한곳에서 관리하는 것이 제 의도였기 때문에 다소 불편했습니다.
정확히. 그러나 MQL4에서는 불가능하고 #import 블록 내에서 템플릿 사용이 허용되지 않는 것 같습니다. 따라서 winapi와 함께 추가 구조를 사용하면 새 유형이 필요할 때마다 #import 선언을 수동으로 업데이트하게 됩니다. 그것은 나에게 오히려 불편합니다.
여전히 이해하고 있는지 확실하지 않지만... MQL4 가져오기 를 void*로 선언할 수 있다고 생각하지 않습니다. 가져오기에서 특정 데이터 형식을 사용해야 하며 그런 다음 해당 데이터 형식으로 DLL 가져오기만 사용할 수 있습니다. 데이터 유형이 다른 동일한 DLL 함수를 사용하려는 경우 https://www.mql5.com/en/forum/148934 와 같은 해결 방법이 없는 한 문제가 있습니다.
uchar - 부호 없는 문자, 이것을 루프에 사용하는 이유는 무엇입니까? 그것은 나에게 의미가 없습니다. . . 정수를 사용합니다. 당신은 ulongs와 함께 일하게 될 것입니다. 그것이 새로운 datetime 입니다. . . 그리고 미래 에 그것에 대해 생각 하지 않고 typecast 하면 경고 를 받게 됩니다 . . . 경고를 처리하거나 무시하십시오. 그래도 좋은 것만 바라지 말고 지금 하는 대로 하고 배우고 이해해
stackoverflow에서 게시한 내용은 나에게 의미가 있습니다. 좋은 조언이라고 생각합니다.
내 질문은 작은 변수 유형의 사용과 관련되어 있으므로 uchar는 단지 예일 뿐입니다. uchar는 0에서 255 사이의 1바이트 양수 값이므로 루프 0에서 100까지 1바이트 uchar를 사용할 수 있습니다.
함수 에서 반환된 값을 저장해야 하고 해당 함수가 uchar를 반환하면 uchar 변수를 사용하여 반환된 값을 저장합니다. . . 원래 mql4에서는 이것이 문제가 아니었지만 새로운 mql4에서는 더 많은 문제가 될 것입니다.
제가 질문을 했을 때 제가 왜 원하는지 몰라서 질문을 한 이유입니다 lol ...
8비트 변수 유형이 32비트보다 빠르게 처리되는지 또는 속도가 더 느리거나 같을지, 8비트 값이 RAM이나 디스크 공간을 적게 사용하는지 알 수 없습니다. 이제 우리가 사용할 수 있는 작은 변수 유형이 있으므로 코드 블록의 요구 사항에 맞을 때 사용하는 것과 전체적으로 32비트 정수를 사용하는 것의 장단점을 알고 싶었습니다.
32비트 OS가 4개의 8비트 값을 동시에 처리할 수 있을 거라고 생각했지만 몰랐습니다. 분명히 아닙니다. 이것은 64비트 OS가 더 많은 RAM에 액세스할 수 있다는 사실을 제외하고는 32비트보다 실제로 훨씬 빠르지 않은 이유를 설명합니다. 나는 종종 그것에 대해 궁금했다.
해결책을 찾지 못한 질문이 있습니다.
void& 어떻게 사용하나요? 내 말은, DLL에 대한 포인터를 보내야 하는 경우입니다. 도움말 파일에는 이 void 유형을 사용하는 functions 가 있지만 소스의 아무 곳에나 배치하면 컴파일되지 않습니다. 템플릿을 해결 방법으로 사용하려고 했지만 #import 문 내에서 템플릿이 금지되어 있습니다.
단일 유형에 대한 구성을 관리했지만 명시적 유형을 지정하지 않는 한 DLL에 대한 전달 void& 배열 포인터를 구현할 수 없습니다.
구조체 배열을 DLL에 전달하는 데 제한이 있습니까?
MT4Structure 가 단순한 구조 라고 가정 합니다.
kernel32.dll을 가져오면 단일 구조가 제대로 작동합니다.
그러나 나는 구조 배열을 받아들이는 일을 시작할 수 없습니다. 컴파일러는 이 선언에 대한 매개변수로 전송되는 경우 MT4Structure&[] 로 컴파일되지 않습니다.
구조체 배열을 DLL에 전달하는 데 제한이 있습니까?
다음과 같은 문제를 볼 수 없습니다.
예상대로 작동합니다(MT4 및 DLL에서 다른 기본 구조 정렬을 허용하는 경우).
(BTW, 실제로 MQL4 bool의 내부 표현이 무엇인지 확실하지 않지만 Win32 함수 를 int를 반환하는 것으로 선언하고 싶습니다. Win32 함수는 C++ bool이 아닌 BOOL을 반환합니다. BOOL은 Windows 매크로입니다. 4바이트 정수의 경우 값이 1/0인 반면 C++ bool은 단일 바이트입니다. 실제로 4바이트를 반환할 때 함수에서 단일 바이트의 반환 값을 기대하도록 MT4에 지시하면 다음을 수행할 수 있습니다. 가능성은 매우 낮습니다 - 스택 손상으로 끝납니다.)
void& 어떻게 사용하나요? 내 말은, DLL에 대한 포인터를 보내야 하는 경우입니다.
귀하의 질문이 무엇인지 잘 모르겠습니다. 예를 들어, Win32 API 문서에서는 void*를 사용하여 "이것은 모든 유형의 포인터를 허용합니다. Win32 함수 는 메모리 블록이 무엇인지 상관하지 않습니다"를 의미합니다.
귀하의 질문이 무엇인지 잘 모르겠습니다. 예를 들어, Win32 API 문서에서는 void*를 사용하여 "이것은 모든 유형의 포인터를 허용합니다. Win32 함수는 메모리 블록이 무엇인지 상관하지 않습니다"를 의미합니다.
정확히. 그러나 MQL4에서는 불가능하고 #import 블록 내에서 템플릿 사용이 허용되지 않는 것 같습니다. 따라서 winapi와 함께 추가 구조 를 사용하면 새 유형이 필요할 때마다 #import 선언을 수동으로 업데이트하게 됩니다. 수입품을 한곳에서 관리하는 것이 제 의도였기 때문에 다소 불편했습니다.
정확히. 그러나 MQL4에서는 불가능하고 #import 블록 내에서 템플릿 사용이 허용되지 않는 것 같습니다. 따라서 winapi와 함께 추가 구조를 사용하면 새 유형이 필요할 때마다 #import 선언을 수동으로 업데이트하게 됩니다. 그것은 나에게 오히려 불편합니다.