void foo(char const **) {}

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++간의 차이 때문에 발생하는 문제일까요?