int main()
{
char const *const s = "";
foo(&s);
}
foo는 상수가 아닌 포인터의 포인터를 인자로 받습니다
이때 상수 포인터의 포인터를 foo에 집어넣으면 const qualifier 하나가 빠져야하기 때문에 당연히 에러가 납니다
void glShaderSource(GLuint shader,
GLsizei count,
const GLchar **string,
const GLint *length);
그런데 위 함수의 3번째 인자에 똑같이 상수 포인터의 포인터를 넣으면 에러가 안납니다
보시다시피 3번째 인자의 타입은 foo의 인자 타입과 같습니다 (GLchar == char)
이런 차이가 왜 날까요?
참고로 glShaderSource는 서브 프로젝트로 넣어놓은 glad에 의해 노출되어있는건데
CMakeLists.txt에 C로 컴파일되게 해놓기는 했습니다
본 프로젝트는 C++로 컴파일 됩니다
혹시 C와 C++간의 차이 때문에 발생하는 문제일까요?
아니 C++에서도 저 에러는 잡힘
반대로 C++에서는 기대대로 에러가 나는데 C 함수를 쓰니 안나서 드리는 질문입니다..
Mesa 헤더에는 세 번째 인자가 const GLChar *const*string로 되어 있던데
아.. 그러면 이해가 되네요 OpenGL 레퍼런스 페이지상의 인자와 실제 사용되고 있는 헤더파일의 인자 타입이 다른가 보네요
아 glad 썼구나... 근데 거기에도 저렇게 하긴 함
컴파일러 warning 설정 때문 아님?