No indicas cómo has declarado commandline, quizás deberías postear el trozo de código con la declaración de commandline. De todos modos, allá voy:
En C, NULL es una macro que contiene el valor correspondiente a un puntero nulo (en C++ creo que es siempre 0, en C es usualmente 0, pero depende del sistema, no hay garantía de que sea así, algún sistema he visto que emplea -1 para este valor).
Tal como lo muestras, commandline es un puntero a carácter. Si lo que quieres es que este puntero tenga el valor de puntero nulo, basta con poner
commandline = NULL;
Si commandline es un puntero a puntero (del tipo que sea), sería:
*commandline = NULL;
Ten en cuenta que NULL es una dirección, por lo que es aplicable a cualquier puntero, sea del tipo que sea. El cast que estás haciendo es ilegal, estás intentando pasar de puntero a carácter, y de ahí que te indique que los tamaños son distintos y no puede hacer la conversión.
Si commandline es una cadena de caracteres, declarada como
char commandline[50]; // (por ejemplo)
(o creada mediante malloc() o alguna de sus parientes), y lo que quieres es que la cadena quede vacía, puedes poner
strcpy(commandline, "");
o bien, en un bucle ir poniendo a cero carácter a carácter.
No sé si esto resuelve tu duda, si no es así postea el trozo de código y podré ser más preciso.
Saludos,