2016-11-11 1 views
12

Visual Studio에서 "구문 오류"와 "컴파일러 오류"의 차이점은 무엇입니까? 또는 다른 방법으로, 왜 어떤 "컴파일 타임"오류에 밑줄이 그어져 빨강 물결 모양의 줄과 일부는 푸른 색 물결 모양 줄이 있습니까? 이 설명 파란색 오류 밑줄Visual Studio에서 구문 오류 또는 빨간색 물결 모양 밑줄과 파란색 물결 모양 밑줄

No overload for method 'ValidateFilteredRecipient' takes 6 arguments

있다 :

'ValidateBuild': cannot declare instance members in a static class

그것은 내게 분명하지 않다이 설명 빨간색 오류 위의 밑줄

enter image description here

있다 예를 들면 다음과 같습니다 두 가지 오류의 구별되는 특징은 무엇입니까?

나는 대답을 찾는다는 것이 조각 일 것이라고 생각했다 : 나는 그걸 구글로 만들 것이고, 첫 번째 결과는이 주제를 완전히 설명하는 MSDN 페이지 일 것이다. 그러나, 매우 놀랍게도, 이것은 사실이 아니었다. 이

visual studio red underline vs. blue underline

없음 도움 : (나는 아직 빨간색 "구문 오류"를 의미 몰랐다과 파란색 "컴파일러 오류"를 의미하기 때문에) 나는 색상을 구글 노력에 의해 시작했다. 그럼 이러한 검색 시도 :

visual studio error underline color meanings
visual studio underline color meanings

나는이 아무데도 것을 볼 수 있었다, 그래서 좀 더 인터넷 검색 및 색상은 VS에서 설정 한 위치를 알아 낸 : 도구> 옵션> 환경> 글꼴 및 색상. 그건 그렇고, 거대한 목록을 검색 할 수 없다는 것은 매우 성가신 일이지만 "구문 오류"에는 빨간색 물결 모양의 밑줄이 있고 "컴파일러 오류"에는 파란색 물결 모양 밑줄이 있다는 것을 알았습니다.

enter image description here

그래서 사람들은 무엇을 의미합니까? Google로 다시 : 관련

visual studio compiler error vs. syntax error

아무것도. 다음은 MSDN에서, 내가 찾은 가장 가까운입니다 :

Fonts and Colors, Environment, Options Dialog Box

이 페이지는 이러한 항목이 있습니다

Compiler Error -- Blue squiggles in the editor indicating a compiler error.

Syntax Error -- Parse errors.

전혀 도움이 - "강조 조금도".난 항상이 "구문 오류"적어도 무엇인지 알고 있다고 생각했고, Wikipedia 동의 : 또한

a syntax error is an error in the syntax of a sequence of characters or tokens that is intended to be written in a particular programming language.

, here is what what it has for syntax :

the syntax of a computer language is the set of rules that defines the combinations of symbols that are considered to be a correctly structured document or fragment in that language.

그래서에서 다시 내 "구문 오류"에가는 위 :

No overload for method 'ValidateFilteredRecipient' takes 6 arguments

여기에 포함 된 정의에 따라 구문 오류가 어떻게 발생합니까?

'ValidateBuild': cannot declare instance members in a static class

누군가가 나에게이 문제를 알아내는 데 도움 주실 래요 : 사실, 내 의견에서 "컴파일러 오류"나는 더-밀접하게이 구문 오류의 정의에 부합있어?

+0

@ AlfieGoodacre - "당신이 할 수 없거나 컴파일러가"<--- a.k.a. "당신이 잘못한 것을 허락하지 않을 것입니다. –

+0

아주 잘 정리 된 질문에 대한 포기하지 말고, 당신이 깊이 공부하고있는 것이 무엇인지 정확히 깨달았을 때 약간의 털 복숭아 개 이야기. 붉은 물결 모양의 선, 푸른 물결 모양의 선, 우리 모두가 함께 할 수는 없습니까? –

+0

@ JeroenMostert - 완전히 이해합니다. 하지만 너를 괴롭히지 않니 ?? 내 말은, 이것은 상업용 엔터프라이즈 급 IDE입니다 ... 퍼즐을 풀기 위해 적어도 하나의 오류 유형이 아닌 이유는 무엇입니까? 왜 그들이 문서화되지 않았습니까? –

답변

1

구문 오류와 컴파일 오류의 주요 차이점은 Visual Studio에서이를 감지 할 때입니다.

코드 작성시 구문 오류가 감지되고 강조 표시됩니다. 이러한 오류를 가져 오기 위해 코드를 작성할 필요는 없습니다.

그러나 편집 오류는 Editor에서 코드로 감지 할 수 없기 때문에 복잡합니다. 빌드를 확인하기 위해 컴파일러를 통해 실행해야합니다 (빌드를 수행하십시오). 그래서 컴파일을하지 않고 코딩을 계속할 수도 있고 빌드 할 때까지 감지 할 수 없을 수도 있습니다.

기본적으로 구문 오류는 컴파일 오류의 하위 집합입니다. 메모장과 같은 텍스트 편집기를 사용하여 코드를 작성하면 구문 오류가 표시되지 않습니다. 컴파일러를 통해 코드를 실행할 때 모두가 컴파일 오류로 기록됩니다.

코드를 다르게 강조하는 것과 관련하여 개발자가 코드를 작성하는 동안 잡을 수 있었던 것을 이해하는 시각적 표현이라고 생각합니다.

모든 사람이 언급했듯이 하루 종일 코드를 실행하려면 두 가지를 모두 수정해야합니다.

이는 모든 프로그래밍 언어와 해당 언어와 함께 사용되는 편집기에 해당됩니다.

3

구문과 컴파일러 오류로 인해 코드가 컴파일되지 않습니다.

구문 오류는 코드가 다른 코드와 상호 작용하는 방식을 나타냅니다. 함수에 매개 변수를 전달할 때 형식 불일치 같은 것이 있습니다.

반면 컴파일러 오류는 봉인 된 클래스에서 상속하거나 정적 클래스 내에 정적이 아닌 멤버를 정의하는 것과 같은보다 근본적인 아키텍처 위반을 참조합니다. 이것들은 언어의 사용보다는 언어의 정의에 어긋납니다.

+0

"이것들은 ** 언어 정의 **에 어긋납니다."- 그 언어의 구문이 아닌가요? –

+0

나는이 두 가지 유형의 오류를 구분할 필요가 있다고 생각한다. 구문 오류라고 부르든 의미가 다른 것이 든. IMO 구문 오류는 단순히 컴파일러 오류의 다른 카테고리 일뿐입니다. – Theo

+0

나는 당신과 거기 확실히 동의한다. 나는 MS가 처음에이 두 가지를 구별하는 것을 괴롭 히고 구현에 공을 떨어 뜨리는 방법에 난처했다. –

관련 문제