나는 여기처럼 보이는 몇 가지 코드가 어떤 코드가 나는 오류가Visual Studio에서 typedef 열거 형과 정의가 충돌하는 이유는 무엇입니까? <code>syntax error: 'constant'</code>를 : Visual Studio에서 컴파일 할 때
#define ERROR 0
namespace lib{
class Logger{
public:
typedef enum {ERROR = 1} LogLevel;
};
}
(I 물론, 그것을 간체). 문제는 내가 정의와 typedef enum에 ERROR라는 단어를 다시 사용한다는 것이 분명하다.
누구나 네임 스페이스와 클래스 안에 포함 된 일부 변수 이름에 영향을주는 정의 논리를 알고 있습니까? 내 말은, ERROR
을 lib::Logger::ERROR
과 어떻게 혼동시킬 수 있는지는 내 생각에 완전히 다른 범위를 가지고 있기 때문입니다.
매크로입니다. 즉, 컴파일러가 'ERROR'로 보는 모든 곳에서 'ERROR'로 바뀝니다. 그리고, "g ++로 컴파일하지"않습니다. 뭔가 다른 것이 컴파일되지만이 코드는 컴파일되지 않습니다. –
주된 이유는 Java/Python 규칙 (상수의 경우 대문자)이 C++에서 채택되지 않았기 때문입니다. –
** - 1 ** 실제 코드 **가 아닌 코드를 게시하는 경우. –