La sintaxis sería de esta forma:
[modificador][tipo_de_dato] nombre_de_funcion ()
El modificador puede ir o no puede ir, eso depende de: si la función es estática, pertenece a una clase y tiene un acceso determinado (private, package, public, ...).
El tipo de dato es lo que va a devolver la función, que puede ser (dependiendo del lenguaje) una variable, un arreglo, una matriz, un puntero, una referencia o simplemente no devuelve nada (tipo vacío o void). Normalmente siempre vá, pero algunos lenguajes permiten que el tipo se ignore para poder devolver diversos tipos de datos (por ejemplo, python o php).
El nombre de función es obligatorio y sigue las mismas reglas de los nombres para las variables. Por conveniencia el nombre debe indicar un proceso, o identificar de alguna manera lo que se está haciendo (por ejemplo, si devuelve un valor podría llamarse getValor)
Ejemplos:
En C/C++:
void funcion1 ();
int funcion2 ();
static double funcion ();
const char* funcion_s ();
En Java (dentro de una clase):
public void funcion1 () {/* cuerpo */}
private int funcion2 () {/* cuerpo */}
public static double funcion3 () {/* cuerpo */}
En Python:
def funcion ():
En PHP y en Javascript:
function funcion_zero () { /* cuerpo */ }
En VB6 creo que era así:
Private Function MiFuncion ()
Private Sub Procedimiento ()
Bueno, son algunos ejemplos pero en todos se cumple de cierta manera el formato de la función que definí al comienzo de la respuesta. La característica principal es que no reciben ninguna entrada de datos (no hay nada entre ls paréntesis). Algunos lenguajes suelen incluir alguna palabra especial que se coloca dentro de los paréntesis, por ejemplo en python, en una clase se agrega self para hacer referencia al objeto que está llamando a la función (o método, dado que está en una clase). Y en c/c++ se puede agregar la palabra void dentro de los paréntesis para indicar que no se pasan valores a la función.
.