식의 매크로가 예상대로 작동하지 않습니다.

Mounika

예상대로 작동하지 않는 2 개의 변수를 추가하는 간단한 매크로가 있습니다.

#include <iostream>
using namespace std;
#define ADD(x,y) (x+y);

int main() {
    int a = 10;
    int b = 1;
    int c = ADD(a,b)+1; //c=11 - NOT EXPECTED
    int c = 1+ADD(a,b); //c=12 - EXPECTED

    cout<< c;
}

위의 코드에서 매크로 시작 부분에 1을 추가하면 예상되는 출력이 제공됩니다. 그러나 끝에 1을 더하면 실제로 1을 더하는 것이 아닙니다.

왜 이런 동작이 발생합니까? 내 지식에 따라 매크로가 사용되면 컴파일러는 컴파일 중에 매크로를 토큰 문자열로 대체합니다. 그렇다면 두 경우 모두 출력이 동일해야합니다.

첫 번째 경우 : c = (a+b)+1두 번째 경우c = 1+(a+b)

Vlad / 모스크바

매크로 끝에서 세미콜론을 제거하고 다음과 같이 작성하십시오.

#define ADD(x,y) (( x ) + ( y ))

그렇지 않으면 예를 들어이 줄

int c = ADD(a,b)+1;

다음과 같다

int c = (a + b); +1;

즉, 변수의 선언 c과 명령문을 포함합니다.

+1;

효과가 없습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SSRS의식이 예상대로 작동하지 않습니다.

분류에서Dev

SSRS의식이 예상대로 작동하지 않습니다.

분류에서Dev

unittest의 assertRaises가 예상대로 작동하지 않습니다.

분류에서Dev

Python의 Foreach가 예상대로 작동하지 않습니다.

분류에서Dev

Python의 MRO가 예상대로 작동하지 않습니다.

분류에서Dev

매크로의 인용 해제 인수가 예상대로 작동하지 않습니다.

분류에서Dev

정규식이 예상대로 작동하지 않습니다.

분류에서Dev

정규식이 예상대로 작동하지 않습니다.

분류에서Dev

DateTime 형식이 예상대로 작동하지 않습니다.

분류에서Dev

BASH의 IF 문이 예상대로 작동하지 않습니다.

분류에서Dev

BufferedInputStream의 available ()이 예상대로 작동하지 않습니다.

분류에서Dev

Python의 수식이 예상대로 작동하지 않습니다.

분류에서Dev

Ant의 체크섬 작업이 예상대로 작동하지 않습니다.

분류에서Dev

Variadic 매크로 인수 수가 예상대로 작동하지 않습니다.

분류에서Dev

`UItableViewCell` 내부의`UIImage`로드가 예상대로 작동하지 않습니다.

분류에서Dev

VB의 비동기가 예상대로 작동하지 않습니다.

분류에서Dev

자바 스크립트의 정규식 표현식이 예상대로 작동하지 않습니다.

분류에서Dev

정규식 한정자가 예상대로 작동하지 않습니다.

분류에서Dev

빈 정의 재정의가 예상대로 작동하지 않습니다.

분류에서Dev

HaProxy 경로 정규식이 예상대로 작동하지 않습니다.

분류에서Dev

정규식 형식이 예상대로 작동하지 않습니다.

분류에서Dev

CSV 형식의 공백으로 인해 strtok가 예상대로 작동하지 않습니다.

분류에서Dev

여러 시트의 매크로가 제대로 작동하지 않습니다.

분류에서Dev

보류중인 의도가 예상대로 작동하지 않습니다.

분류에서Dev

C의 빈 파일 읽기가 예상대로 작동하지 않습니다.

분류에서Dev

Expanded의 FittedBox가 예상대로 작동하지 않았습니다.

분류에서Dev

mat-table의 dataSource가 예상대로 작동하지 않습니다.

분류에서Dev

momentjs의 isBetween 함수가 예상대로 작동하지 않습니다.

분류에서Dev

Formik의 resetForm 메서드가 예상대로 작동하지 않습니다.

Related 관련 기사

  1. 1

    SSRS의식이 예상대로 작동하지 않습니다.

  2. 2

    SSRS의식이 예상대로 작동하지 않습니다.

  3. 3

    unittest의 assertRaises가 예상대로 작동하지 않습니다.

  4. 4

    Python의 Foreach가 예상대로 작동하지 않습니다.

  5. 5

    Python의 MRO가 예상대로 작동하지 않습니다.

  6. 6

    매크로의 인용 해제 인수가 예상대로 작동하지 않습니다.

  7. 7

    정규식이 예상대로 작동하지 않습니다.

  8. 8

    정규식이 예상대로 작동하지 않습니다.

  9. 9

    DateTime 형식이 예상대로 작동하지 않습니다.

  10. 10

    BASH의 IF 문이 예상대로 작동하지 않습니다.

  11. 11

    BufferedInputStream의 available ()이 예상대로 작동하지 않습니다.

  12. 12

    Python의 수식이 예상대로 작동하지 않습니다.

  13. 13

    Ant의 체크섬 작업이 예상대로 작동하지 않습니다.

  14. 14

    Variadic 매크로 인수 수가 예상대로 작동하지 않습니다.

  15. 15

    `UItableViewCell` 내부의`UIImage`로드가 예상대로 작동하지 않습니다.

  16. 16

    VB의 비동기가 예상대로 작동하지 않습니다.

  17. 17

    자바 스크립트의 정규식 표현식이 예상대로 작동하지 않습니다.

  18. 18

    정규식 한정자가 예상대로 작동하지 않습니다.

  19. 19

    빈 정의 재정의가 예상대로 작동하지 않습니다.

  20. 20

    HaProxy 경로 정규식이 예상대로 작동하지 않습니다.

  21. 21

    정규식 형식이 예상대로 작동하지 않습니다.

  22. 22

    CSV 형식의 공백으로 인해 strtok가 예상대로 작동하지 않습니다.

  23. 23

    여러 시트의 매크로가 제대로 작동하지 않습니다.

  24. 24

    보류중인 의도가 예상대로 작동하지 않습니다.

  25. 25

    C의 빈 파일 읽기가 예상대로 작동하지 않습니다.

  26. 26

    Expanded의 FittedBox가 예상대로 작동하지 않았습니다.

  27. 27

    mat-table의 dataSource가 예상대로 작동하지 않습니다.

  28. 28

    momentjs의 isBetween 함수가 예상대로 작동하지 않습니다.

  29. 29

    Formik의 resetForm 메서드가 예상대로 작동하지 않습니다.

뜨겁다태그

보관