2 augusti, 2019 Inopto_AB

c# 매크로 예제

어느 나에게 33을 제공합니다. 나는 괄호를 현명하게 적용하여 그 를 해결할 수 있지만, 어떤 상황에서는 그렇지 않고 다른 상황에서는 작동하는 매크로를 작성하는 것은 매우 쉽습니다. 증분 및 감소 연산자는 특히 장 후반의 while 루프와 같은 루프에서 널리 퍼져 있습니다. 예를 들어, Listing 3.15는 감산 연산자(decrement 연산자)를 사용하여 알파벳의 각 문자를 거꾸로 반복합니다. 미리 정의된 데이터 형식(2장 참조)을 도입한 이제 계산을 수행하기 위해 연산자와 함께 이러한 데이터 형식을 사용하는 방법에 대해 자세히 알아볼 수 있습니다. 예를 들어 선언한 변수에 대해 계산할 수 있습니다. 까다로운 방법은 MacroSubstitutor.Substitute입니다. 처음에는 이것이 쉬워 보입니다. 문자열을 `)`까지 잡고 `,`를 사용하여 분할합니다. 그러나 FOR (i,f(x,g(y))를 고려하십시오.

괄호 수준을 신중하게 계산하고 레벨 1에서만 인수를 끌어들여야 합니다. 정규 표현식으로 모든 것을 할 수 있는 것은 아니며 때로는 루프가 더 분명할 수 있습니다. C#에 대한 주요 디자인 목표 중 하나는 코드를 매우 읽기 쉽게 유지하는 것입니다. 매크로를 작성할 수 있으면 프로그래머가 자신의 언어를 만들 수 있습니다. 코드가 수행하는 작업을 이해하려면 사용자가 언어의 작동 방식을 이해해야 할 뿐만 아니라 해당 시점에 적용되는 모든 #define 매크로도 이해해야 합니다. 따라서 코드를 읽기가 훨씬 더 어려워집니다. 앞의 장에서는 리터럴 값 또는 코드에 직접 포함된 값에 대해 설명했습니다. 연산자를 사용하여 상수 식에서 여러 리터럴 값을 결합할 수 있습니다.

정의에 따라 상수 식은 C# 컴파일러가 상수 발산으로 완전히 구성되기 때문에 컴파일 타임에 평가할 수 있는 식입니다(프로그램이 실행될 때 계산하는 대신). 그런 다음 상수 식을 사용하여 상수 지역 변수를 사용하여 상수 값으로 이름을 지정할 수 있습니다(지역 변수를 사용하여 저장소 위치에 이름을 지정하는 것과 유사). 예를 들어 하루에 초 수를 계산하면 상수 식일 수 있으며, 이 식은 다른 식에 이름으로 사용됩니다. 식에 여러 연산자가 포함되어 있는 경우 각 연산자의 피연산자가 정확히 무엇인지 알 수 있습니다. 예를 들어 식 x+y*z에서 식 x는 추가의 피연산자이고 z는 곱셈의 피연산자입니다. 그러나 y는 추가 또는 곱셈의 피연산자입니까? C# #define C++와 같은 언어에서와 같이 기호에 값을 부여할 수 없습니다. 예를 들어 #define 매크로를 만들거나 상수를 정의하는 데 사용할 수 없습니다. 상수를 정의해야 하는 경우 열거형 변수를 사용합니다. C++ 스타일 매크로를 만들려면 제네릭과 같은 대안을 고려하십시오. 매크로는 오류가 발생하기 쉬운 것으로 악명이 높은 경우 C#은 사용을 허용하지 않지만 더 안전한 대안을 제공합니다. C# 컴파일러에는 별도의 전처리자가 없습니다.

그러나 지시문은 마치 하나 있는 것처럼 처리됩니다. C#에서 전처리기 지시문은 조건부 컴파일을 돕기 위해 사용됩니다. C 및 C++ 지시문과 달리 매크로를 만드는 데 사용되지 않습니다. 사전 처리기 지시문은 한 줄의 유일한 명령이어야 합니다. 목록 3.3의 빼기 예제는 이진 연산자(보다 구체적으로 는 산술 이진 연산자의 예)입니다. 산술 연산자의 각 면에 산모가 나타나고 계산된 값이 할당됩니다.

Kontakta oss!