2016-10-14 3 views
1

Visual Studio 2015에서 이상한 문제가 발생합니다. 사용중인 함수 아래의 매크로를 사용할 때마다 Visual Studio에 정의되지 않은 상태가됩니다. . 이것은 시각적 인 문제 일 뿐이며 컴파일하는 동안 문제를 일으키지 않습니다. 또한 최대 값으로 변수를 사용하는 경우에만 이것이 발생한다는 점을 언급 할 가치가 있습니다. 다음 매크로는 다음과 같습니다'for'매크로가 Visual Studio에서 함수 정의를 찾을 수 없습니다. 2015

#define fiz(MAX_VALUE) for (unsigned int i = 0; i < (MAX_VALUE); i++) 

void functionFoo() 
{ 
    unsigned int max_val = 10; 
    fiz(max_val) { // if I use 10 here I don't experience the same issue 
     /* do stuff */ 
    } 
} 

편집 : 그래서 내 질문은, 다른 사람의 경험 같은/비슷한 문제가했고, 그들이 수 있다면 그것을 해결하기 위해? Edit2 : 더 검색 할 때 this question을 발견했습니다. Visual Studio 2005 이후로이 문제 (또는 기사와 관련된 성능 관련 디자인 선택)가 존재했음을 알 수 있습니다.이 링크의 솔루션을 따르면 문제가 해결되었습니다.

+0

루프 앞에 'i'를 만들고 루프에서 초기화하십시오. – Jguillot

+0

@Jguillot 빠른 답장을 보내 주셔서 감사합니다. 'i'선언에 관계없이 여전히 동일한 문제가 발생합니다 – AcarX

+1

컴파일러는 무엇을 말합니까? – Jguillot

답변

0

MAX_VALUE는 기존 정의이므로 MAX_VALUE를 큰 정수로 바꾸면 매크로가 'macrod'가됩니다.

그런 다음 코드의 줄이 매크로 정의와 일치하지 않으므로 바꿀 수 없습니다.

MAX_VALUE가 아닌 다른 단어 (모두)를 사용해보세요.

+0

안녕하세요. 슬프게 매개 변수 이름을 변경해도 문제가 해결되지 않았습니다 (MYMAXVAL로 시도). – AcarX

관련 문제