오류, 버그, 질문 - 페이지 2864 1...285728582859286028612862286328642865286628672868286928702871...3184 새 코멘트 fxsaber 2020.10.05 10:59 #28631 Andrey Khatimlianskii : 왜 작동하지 않습니까? 대부분의 경우 이 접근 방식은 어디에서나 작동하지 않습니다. 왜냐하면 오른쪽의 VALUE가 정의되지 않은 대체가 있습니다. #define VALUE (VALUE* 2 ) Vladimir Simakov 2020.10.05 11:04 #28632 fxsaber : 대부분의 경우 이 접근 방식은 어디에서도 작동하지 않습니다. 왜냐하면 오른쪽의 VALUE가 정의되지 않은 대체가 있습니다. 예, 다른 사람의 매크로 대체를 변경하는 것은 악입니다. 특히 이것이 사전 정의된 환경 매크로인 경우. 모든 프로젝트 파일을 빌드한 후 매크로 재정의가 결국 나타날 위치를 알 수 없습니다. 매크로 _VALUE를 정의하는 것이 좋습니다. fxsaber 2020.10.05 11:08 #28633 Vladimir Simakov : 예, 다른 사람의 매크로 대체를 변경하는 것은 악입니다. 이 악이 없었다면 이런 일은 일어나지 않았을 것입니다. Valeriy Yastremskiy 2020.10.05 11:12 #28634 Vladimir Simakov : 예, 다른 사람의 매크로 대체를 변경하는 것은 악입니다. 특히 이것이 사전 정의된 환경 매크로인 경우. 모든 프로젝트 파일을 빌드한 후 매크로 재정의가 결국 나타날 위치를 알 수 없습니다. 매크로 _VALUE를 정의하는 것이 좋습니다. VALUE 값을 전역 변수 에 할당하고 곱하고 최종 정의에서 대체하는 것이 불가능한 이유를 물을 수 있습니다. Vladimir Simakov 2020.10.05 11:36 #28635 Valeriy Yastremskiy : VALUE 값을 전역 변수 에 할당하고 곱하고 최종 정의에서 대체하는 것이 불가능한 이유를 물을 수 있습니다. 가능하지만 매크로 대체의 의미가 손실됩니다(코드에서 값 대체). 컴파일러에 대한 모든 희망은 const 유형(그런데 변수 유형을 결정했습니까?)을 C++ constexpr 유형으로 변환하는 것입니다. 그리고 예, 당신은 할 수 있습니다 #ifdef MACROS const int gValue= 2 *VALUE; #undef VALUE #define VALUE gValue #endif fxsaber 2020.10.05 11:38 #28636 Vladimir Simakov : 그리고 예, 당신은 할 수 있습니다 이것을 가지고 타지 마십시오. void Func( int = VALUE ) {} Vladimir Simakov 2020.10.05 11:50 #28637 fxsaber : 이것을 가지고 타지 마십시오. 네, 그렇습니다. constexpr에 다시 물어보자. 이렇게 하면 된다. constexpr auto x = 100 ; void Foo( int _x = x) { std::cout << _x<<std::endl; } int main() { Foo(); return 0 ; } Andrey Khatimlianskii 2020.10.05 11:59 #28638 fxsaber : 대부분의 경우 이 접근 방식은 어디에서나 작동하지 않습니다. 왜냐하면 오른쪽의 VALUE가 정의되지 않은 대체가 있습니다. 분명히 컴파일러가 어떻게 작동하는지 이해하지 못합니다. 행이 순차적으로 구문 분석됨을 나타냅니다. 따라서 오른쪽에는 정의되지 않은 값이 없습니다. #define VALUE 10 // VALUE = 10 #define TMP VALUE // TMP = 10 #undef VALUE // VALUE = EMPTY #define VALUE (TMP* 2 ) // TMP = 10, следовательно VALUE = 20 fxsaber 2020.10.05 12:00 #28639 Andrey Khatimlianskii : 분명히 컴파일러가 어떻게 작동하는지 이해하지 못합니다. 행이 순차적으로 구문 분석됨을 나타냅니다. 따라서 오른쪽에는 정의되지 않은 값이 없습니다. 텍스트 교체처럼 하향식으로 작동합니다. 저것들. "TMP"는 "VALUE"로 대체됩니다. Vladimir Simakov 2020.10.05 12:05 #28640 Andrey Khatimlianskii : 분명히 컴파일러가 어떻게 작동하는지 이해하지 못합니다. 행이 순차적으로 구문 분석됨을 나타냅니다. 따라서 오른쪽에는 정의되지 않은 값이 없습니다. 컴파일러가 아닙니다 - 전처리기입니다) #define VALUE (TMP* 2 ) 로 변하다 #define VALUE (VALUE* 2 ) , VALUE이(가) 정의되지 않았습니다. 1...285728582859286028612862286328642865286628672868286928702871...3184 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
왜 작동하지 않습니까?
대부분의 경우 이 접근 방식은 어디에서나 작동하지 않습니다. 왜냐하면 오른쪽의 VALUE가 정의되지 않은 대체가 있습니다.
대부분의 경우 이 접근 방식은 어디에서도 작동하지 않습니다. 왜냐하면 오른쪽의 VALUE가 정의되지 않은 대체가 있습니다.
예, 다른 사람의 매크로 대체를 변경하는 것은 악입니다.
이 악이 없었다면 이런 일은 일어나지 않았을 것입니다.
예, 다른 사람의 매크로 대체를 변경하는 것은 악입니다. 특히 이것이 사전 정의된 환경 매크로인 경우. 모든 프로젝트 파일을 빌드한 후 매크로 재정의가 결국 나타날 위치를 알 수 없습니다. 매크로 _VALUE를 정의하는 것이 좋습니다.
VALUE 값을 전역 변수 에 할당하고 곱하고 최종 정의에서 대체하는 것이 불가능한 이유를 물을 수 있습니다.
가능하지만 매크로 대체의 의미가 손실됩니다(코드에서 값 대체). 컴파일러에 대한 모든 희망은 const 유형(그런데 변수 유형을 결정했습니까?)을 C++ constexpr 유형으로 변환하는 것입니다.
그리고 예, 당신은 할 수 있습니다
그리고 예, 당신은 할 수 있습니다
이것을 가지고 타지 마십시오.
이것을 가지고 타지 마십시오.
대부분의 경우 이 접근 방식은 어디에서나 작동하지 않습니다. 왜냐하면 오른쪽의 VALUE가 정의되지 않은 대체가 있습니다.
분명히 컴파일러가 어떻게 작동하는지 이해하지 못합니다. 행이 순차적으로 구문 분석됨을 나타냅니다. 따라서 오른쪽에는 정의되지 않은 값이 없습니다.
분명히 컴파일러가 어떻게 작동하는지 이해하지 못합니다. 행이 순차적으로 구문 분석됨을 나타냅니다. 따라서 오른쪽에는 정의되지 않은 값이 없습니다.
텍스트 교체처럼 하향식으로 작동합니다. 저것들. "TMP"는 "VALUE"로 대체됩니다.
분명히 컴파일러가 어떻게 작동하는지 이해하지 못합니다. 행이 순차적으로 구문 분석됨을 나타냅니다. 따라서 오른쪽에는 정의되지 않은 값이 없습니다.
컴파일러가 아닙니다 - 전처리기입니다)
로 변하다
, VALUE이(가) 정의되지 않았습니다.