CPP에서 변수 이름 y1을 사용하지 못하는 건에 대하여
알고리즘 학습을 위해 C++을 처음 접했을 때, y1을 변수로 사용할 수 없다는 얘기를 들은 적이 있다. 아마 누가 y1을 함수로 만들어뒀다고 했던 걸로 기억한다. 어렴풋이 알고만 있었는데, 왜 안되는지 궁금해져서 포스팅하기로 했다.


y1은 베셀 함수를 반환한다. 이는 예약된 이름이 아니지만, math.h에서 정의되어 있다. 심지어 math.h를 포함하지 않더라도, 컴파일러에 의해 기본 함수로 정의되어 있다.(아마도 사람들이 이를 전역 변수로 사용하는 것을 방지하기 위해서일 가능성이 높다).
같은 전역 공간(global space)에서 이를 변수로 재정의(overriding)할 수 없다. 게다가, 짧은 이름의 변수를 전역 변수로 사용하는 것을 기대하는 사람은 없다. 전역 변수는 함수 간 또는 여러 소스 파일 및 모듈에서 사용하기 위해 설계된 것이기 때문에, 보통 더 설명적인 이름을 사용하는 것이 일반적이다. y1과 나머지 전역 변수를 main() 함수 안에서만 사용하고 있다면, 이들을 main()의 지역 변수로 정의하는 것이 좋다.
결론
- y1을 사용하려면 define을 통해 정의하거나
- 언더바를 사용해서 _y1을 이용하거나
- 지역변수로 정의하거나
- 또는 다른 직관적인 이름을 짓는 것이 좋다.
참고자료
https://www.quora.com/Why-is-C++-showing-an-error-when-using-y1-10009
Why is C++ showing an error when using y1 [10009]?
Answer (1 of 3): I can't imagine that y1 is a keyword, but if you're suspicious, try respelling it. A more relevant name shouldn't be too hard to come up with. "redeclared as a different kind of symbol" is one I haven't seen before. It makes me wonder if t
www.quora.com
https://stackoverflow.com/questions/46251041/unable-to-use-y1-as-a-float-variable-in-c
Unable to use 'y1' as a float variable in C
Introduction: I'm building a simple program to input the coordinates of two numbers from user and print the distance between those coordinates. Issue: The problem is that the compiler isn't lettin...
stackoverflow.com
'C++' 카테고리의 다른 글
[C++] for loop에서 const auto&의 사용 (0) | 2024.12.01 |
---|---|
[C++] assign과 resize의 차이 (1) | 2024.11.10 |
[C++] 소수점 고정 시 반올림 오류와 부동 소수점 오차 (0) | 2024.08.13 |
[C++] 소수점 고정 출력과 cout << fixed, cout << setprecision(), cout.precision() (0) | 2024.08.13 |
[C++] cin과 getline(), 그리고 cin.ignore() (0) | 2024.08.13 |
CPP에서 변수 이름 y1을 사용하지 못하는 건에 대하여
알고리즘 학습을 위해 C++을 처음 접했을 때, y1을 변수로 사용할 수 없다는 얘기를 들은 적이 있다. 아마 누가 y1을 함수로 만들어뒀다고 했던 걸로 기억한다. 어렴풋이 알고만 있었는데, 왜 안되는지 궁금해져서 포스팅하기로 했다.


y1은 베셀 함수를 반환한다. 이는 예약된 이름이 아니지만, math.h에서 정의되어 있다. 심지어 math.h를 포함하지 않더라도, 컴파일러에 의해 기본 함수로 정의되어 있다.(아마도 사람들이 이를 전역 변수로 사용하는 것을 방지하기 위해서일 가능성이 높다).
같은 전역 공간(global space)에서 이를 변수로 재정의(overriding)할 수 없다. 게다가, 짧은 이름의 변수를 전역 변수로 사용하는 것을 기대하는 사람은 없다. 전역 변수는 함수 간 또는 여러 소스 파일 및 모듈에서 사용하기 위해 설계된 것이기 때문에, 보통 더 설명적인 이름을 사용하는 것이 일반적이다. y1과 나머지 전역 변수를 main() 함수 안에서만 사용하고 있다면, 이들을 main()의 지역 변수로 정의하는 것이 좋다.
결론
- y1을 사용하려면 define을 통해 정의하거나
- 언더바를 사용해서 _y1을 이용하거나
- 지역변수로 정의하거나
- 또는 다른 직관적인 이름을 짓는 것이 좋다.
참고자료
https://www.quora.com/Why-is-C++-showing-an-error-when-using-y1-10009
Why is C++ showing an error when using y1 [10009]?
Answer (1 of 3): I can't imagine that y1 is a keyword, but if you're suspicious, try respelling it. A more relevant name shouldn't be too hard to come up with. "redeclared as a different kind of symbol" is one I haven't seen before. It makes me wonder if t
www.quora.com
https://stackoverflow.com/questions/46251041/unable-to-use-y1-as-a-float-variable-in-c
Unable to use 'y1' as a float variable in C
Introduction: I'm building a simple program to input the coordinates of two numbers from user and print the distance between those coordinates. Issue: The problem is that the compiler isn't lettin...
stackoverflow.com
'C++' 카테고리의 다른 글
[C++] for loop에서 const auto&의 사용 (0) | 2024.12.01 |
---|---|
[C++] assign과 resize의 차이 (1) | 2024.11.10 |
[C++] 소수점 고정 시 반올림 오류와 부동 소수점 오차 (0) | 2024.08.13 |
[C++] 소수점 고정 출력과 cout << fixed, cout << setprecision(), cout.precision() (0) | 2024.08.13 |
[C++] cin과 getline(), 그리고 cin.ignore() (0) | 2024.08.13 |