    # definitions for C
    include "c_comment.lang"

    label = '^[[:blank:]]*[[:alnum:]]+:[[:blank:]]*\z'

    (keyword,normal,classname) =
      `(\<struct)([[:blank:]]+)([[:alnum:]_]+)`

    state preproc start '^[[:blank:]]*#(?:[[:blank:]]*include)' begin
            string delim "<" ">"
            string delim "\"" "\"" escape "\\"
            include "c_comment.lang"
    end

    preproc = '^[[:blank:]]*#([[:blank:]]*[[:word:]]*)'

    include "number.lang"

    include "c_string.lang"

    keyword = "__asm|__cdecl|__declspec|__export|__far16",
      "__fastcall|__fortran|__import",
      "__pascal|__rtti|__stdcall|_asm|_cdecl",
      "__except|_export|_far16|_fastcall",
      "__finally|_fortran|_import|_pascal|_stdcall|__thread|__try|asm|auto",
      "break|case|catch|cdecl|const|continue|default",
      "do|else|enum|extern|for|goto",
      "if|pascal",
      "register|return|sizeof|static",
      "struct|switch",
      "typedef|union",
      "volatile|while"

    type = "bool|char|double|float|int|long",
      "short|signed|unsigned|void|wchar_t"

    include "symbols.lang"

    cbracket = "{|}"

    include "function.lang"

    include "clike_vardeclaration.lang"