def get_function_name(s):
    """
    Get the function name from a C-style function declaration string.

    :param str s: A C-style function declaration string.
    :return:      The function name.
    :rtype:       str
    """
    s = s.strip()
    if s.startswith('__attribute__'):
        if '))' not in s:
            raise ValueError(
                '__attribute__ is present, but I cannot find double-right parenthesis in the function declaration string.'
                )
        s = s[s.index('))') + 2:].strip()
    if '(' not in s:
        raise ValueError(
            'Cannot find any left parenthesis in the function declaration string.'
            )
    func_name = s[:s.index('(')].strip()
    for i, ch in enumerate(reversed(func_name)):
        if ch == ' ':
            pos = len(func_name) - 1 - i
            break
    else:
        raise ValueError(
            'Cannot find any space in the function declaration string.')
    func_name = func_name[pos + 1:]
    return func_name
