저는 Mac에서 C++을 배웠고 최근에 Windows 7로 이전했습니다. Windows v7.1 sdk를 다운로드하고 설치 프로그램을 실행했습니다. 자사의 닷넷 4 종속 버전의 sdk 및 .net 4 설치되어 있습니다.컴파일러가 논리적이고 정의되지 않은 식별자입니다.
나는 그것을 사용하는 것이 더 좋기 때문에 커맨드 라인을 사용하고있다. 나는 맥에서 gcc 컴파일러를 사용했기 때문에 프로그래밍에 익숙하다고 생각하기에 꽤 좋다.
나는 SetEnv 배치 파일을 사용하여 환경 변수를 설정하기 때문에 v7.1 sdk 개발자 명령 프롬프트를 사용하고 있습니다.
컴파일러는 분명히 Microsoft의 cl.exe 컴파일러입니다.
나는 프로그램이 실제로 보일 수 있도록 getchar()를 포함하여 전형적이고 매우 간단한 hello world 프로그램을 돌렸고, mac은 그것을 요구하지 않았기 때문에 새로운 것이었다. 그리고 getchar는 잘 작동했고, 프로그램은 컴파일되어 잘 돌아갔다.
내가 Mac에서 쓴 몇 가지 소스 코드를 컴파일 할 때 문제가 발생했습니다. 그런데 Mac에서 벌금을 벌었습니다. 그것은 논리적 인 'and'연산자가 정의되지 않은 식별자라는 것을 알려주는 것과 같은 정말 이상한 오류를 던지기 시작했습니다. 이제 저는 여기 바보 같은 사람이 될 수 있습니다. 그러나 제 이해력에서와 연산자는 식별자가 아니며 연산자입니다.
그래서 나는 하나의 if 문과 하나의 else 문과 'and'연산자를 사용하는 매우 간단한 프로그램을 작성하고 어떤 일이 일어나는지를 보면서 문제의 범위를 좁히기로 결정했습니다. 아래는 제가 컴파일을 시도하는 코드입니다 :
//hello, this is a test
#include <iostream>
int main()
{
char end;
int a = 0, b = 0;
std::cout << "If the variable a is larger than 10 and variable b is less than a, then b will be subtracted from a, else they are added.\n";
std::cout << "Enter a number for variable a\n";
std::cin >> a;
std::cout << "Now enter a number for variable b\n";
std::cin >> b;
if (a>10 and b<a) a - b;
else a+b;
std::cout << "The value of a is: " <<a;
std::cout << "Press any key to exit";
end = getchar();
return 0;
}
는 그리고 이것은 확실히이 그 오류의 목록이 아니라 적어도 내가
cl /EHsc main.cpp
그리고 마지막으로 프로그램을 컴파일하는 데 사용되는 명령입니다 만 프로그램 제기, 왜 이러한 오류가 여기 있는지 확실하지 않습니다. 그것은 나에게 어떤 의미가 없습니다.
MAIN.CPP 이러한 오류의
error C2146: syntax error : missing ')' before identifier 'and'
error C2065: 'and' : undeclared identifier
error C2146: syntax error : missing ';' before identifier 'b'
error C2059: syntax error : ')'
error C2146: syntax error : missing ';' before identifier 'a'
warning C4552: '<' : operator has no effect; expected operator with side-effect
warning C4552: '-' : operator has no effect; expected operator with side-effect
error C2181: illegal else without matching if
warning C4552: '+' : operator has no effect; expected operator with side-effect
모든 마지막은 이상한입니다. 나는 결코 전에 그것을 만난 적이 없다. 그리고 나는 결코 묻지 않고 내 대답을 찾을 수 있었기 때문에 나는 전에 한 번도 질문하지 않았다. 그러나이 질문에서 나는 정말로 난처한 상황에 처해있다.
'a + b'와'a-b'는 두 변수를 더하거나 뺍니다. 그러나 결과는 아무 것도하지 않습니다. 결과를 변수에 저장하거나 함수 호출로 전달하는 것과 같은 부작용이없는 명령문이므로 프로그램 흐름에 영향을 미치지 않습니다. 실제로 컴파일러는 프로그램의 존재 유무가 프로그램에 전혀 영향을 미치지 않으므로 프로그램에서 완전히 제거 할 가능성이 높습니다. – Frxstrem
이 방법을 잘못 사용하지 마십시오.하지만 문제를 설명하기 위해 긴 설명이 필요하지 않습니다. 게시물의 정보 대 소음 비율이 그다지 좋지는 않습니다. – StoryTeller
당신은 그것을 깨닫고 && C++에서? 이 코드가 Mac에서 컴파일 된 경우 실제로 컴파일러가 연결되어 있습니다. – anhoppe