Envío de “char **” al parámetro de la función “const char **”

Supongamos que tengo una firma de función:

bool func(const char** arrayOfStrings); 

Y tengo una función auxiliar con firma:

 char** auxFunc(not relevant); 

Por alguna razón puedo lograr hacer lo siguiente:

 func(auxFunc(not relevant)); 

Tengo advertencias / compiler errors:

error: al inicializar ‘const char * ‘ con una expresión de tipo ‘char * ‘ se descartan los calificadores en los tipos de punteros nesteds

¿Por qué esto no funciona como lo espero y qué puedo hacer al respecto?

Le está pidiendo al comstackdor que realice una conversión implícita de char ** a const char ** , que viola peligrosamente las reglas de const-correctness. Es por esto que obtienes un error del comstackdor.

Lea la entrada de Preguntas frecuentes aquí para comprender mejor el problema (también hay numerosas respuestas sobre ese problema aquí en SO).

Después de eso, debe decidir cuál es la mejor solución para su caso: rediseñar el código para eliminar el problema o suprimir el error con una conversión explícita. Nadie puede hacerlo por usted sin entender su diseño / código con mucho mayor detalle (que no proporcionó).

Desafortunadamente, C no hace un lanzamiento implícito de char ** a char const ** aunque esto sería seguro. Tendrá que convertirlo explícitamente func((char const **)(auxFunc())) .