code: def check(
      name, input, idDict, output=None, key=None, asTextOutput=None
  ):
      if output is None:
          output = input
      # First, check without semicolon
      _check(name, input, idDict, output, key, asTextOutput)
      if name != "macro":
          # Second, check with semicolon
          _check(
              name,
              input + " ;",
              idDict,
              output + ";",
              key,
              asTextOutput + ";" if asTextOutput is not None else None,
          )
  
imports: import itertools
  import zlib
  from xml.etree import ElementTree
  import pytest
  from sphinx import addnodes
  from sphinx.addnodes import desc, desc_content, desc_name, desc_parameter, desc_parameterlist, desc_sig_name, desc_sig_space, desc_signature, desc_signature_line, pending_xref
  from sphinx.domains.c import DefinitionError, DefinitionParser, Symbol, _id_prefix, _macroKeywords, _max_id
  from sphinx.ext.intersphinx import load_mappings, normalize_intersphinx_mapping
  from sphinx.testing import restructuredtext
  from sphinx.testing.util import assert_node
  from sphinx.writers.text import STDINDENT
label_desc: Use image node_id 3 for calling a global function with example usage: check(name, input, idDict, output, key, asTextOutput) without return types