pointer c function void lint

pointer - en c: func(void) vs. func()



void function c++ (2)

Esta pregunta ya tiene una respuesta aquí:

Cuando una función C no acepta ningún argumento, ¿tiene que ser declarada / definida con un parámetro "vacío" por las reglas de idioma? PC-Lint parece tener problemas cuando no hay nada en la lista de argumentos, y me preguntaba si hay algo en la sintaxis del idioma que no conozco.

Edición: acabo de encontrar una pregunta duplicada (¿qué es una copia de seguridad? Vino primero), argumentos vacíos , que tiene más respuestas y explicaciones.


La función IIRC func (void) en C declarará una función que no toma parámetros mientras que func () declara una función que tomará cualquier número de parámetros. Creo que este último es un artefacto proveniente de C. AN-ANSI.

Según Wikipedia aquí, la declaración func () básicamente declara la función "sin información sobre los parámetros".


void significa que la función no toma ningún parámetro. Por ejemplo,

int init (void) { return 1; }

Esto no es lo mismo que definir

int init () { return 1; }

porque en el segundo caso el compilador no verificará si realmente se llama a la función sin ningún argumento; en su lugar, se aceptará una llamada de función con un número arbitrario de argumentos sin ninguna advertencia (esto se implementa solo para la compatibilidad con la sintaxis de definición de función de estilo antiguo, pre-ANSI).