내가 작업하고있는 C SDL 프로젝트에서 나는 가독성을 위해 typedef
ed char *
to str
이다. 이제GCC가 왜이 '경고 된 한정자'경고를 내 보냅니 까?
내가 할 때
const str title = SDL_GetWindowTitle(win);
이 SDL_GetWindowTitle
가 const char *
반환하는 경우, 내가 얻을 :
warning: return discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
내가 char *
에 유형을 변경하면 경고가 removeed된다
const char *title = SDL_GetWindowTitle(win);
typedef는 형식에 대한 별칭 일뿐입니다. 따라서 변수를 str
또는 char *
으로 선언하면 동등한 경고를받을 수 있습니다. 아니면 내가 놓친 뭔가가 ...?
CLI에서 GCC를 사용하고 있으므로 an IDE's fault이 아닙니다.
미리 Thx! 귀하의 경우
const str
const char *
다른 종류 있도록
"* CLI의 * *"? – alk
또 다른 좋은 예가 typedef 포인터 유형을 원하지 않는 이유입니다. – alk
_ "가독성을 위해"_ - 동의하지 않으며, 이것이 왜 중요한지를 보여줍니다. 당신이 그것을 더 읽기 쉽다고 생각할 수도 있지만 관용적 인 코드를 작성하는 데 익숙한 숙련 된 사용자는 그렇지 않으므로 코드가 이상하고 바보가 될 것입니다. –