2013-09-22 2 views
0

데이터 구조에 전역 포인터를 저장하고 데이터 구조에서 데이터 포인터를 가져 와서 반환하려고하는 메서드가 있습니다. 반환 할 수 있기를 바랍니다. 그들은 괜찮지 만 컴파일러는 나를 허용하지 않는다는 것을 알고 있습니다. 데이터 구조에서 가져온 것이기 때문에 그들은 로컬 일뿐입니다. 그러나 실제로는 그것들을 외부에서 가져 왔습니다.로컬 변수의 주소를 반환하고 싶습니다

미리 감사드립니다.

답변

1

아니요; 컴파일러는 당신보다 잘 알고 있습니다. static이 아닌 로컬 변수의 주소를 안전하게 반환 할 수 없습니다. 전역 변수의 주소를 함수에서 포인터로 반환 할 수는 있지만 그렇게하려는 것은 아닙니다. 그리고 그렇게한다면, 스레딩에 대한 결과를 알아야합니다 (변수 값이 변경되면 스레드 된 코드의 결과는 무시할 수 없으며 읽기 전용으로 변경 불가능한 변경되지 않은 값에 액세스하는 경우 문제가되지 않습니다).

귀하의 컴파일러를 듣고; 그것은 너 자신으로부터 너를 보호하려고 노력하고있다. C++에 대해 더 많이 알고 있습니다.

컴파일러가 잘못되었음을 알리기 위해 코드를 표시해야하지만 표시되는 내용이 유효하지는 않습니다.

+0

감사합니다! 변수를 정적으로 만드는 것에 대해 생각해 보겠습니다. – Range

관련 문제