diff --git a/Doc/c-api/bytes.rst b/Doc/c-api/bytes.rst
index b66047b..c1a82b2 100644
--- a/Doc/c-api/bytes.rst
+++ b/Doc/c-api/bytes.rst
@@ -114,7 +114,7 @@
 
 .. cfunction:: PyObject* PyBytes_FromFormatV(const char *format, va_list vargs)
 
-   Identical to :func:`PyBytes_FromFormat` except that it takes exactly two
+   Identical to :cfunc:`PyBytes_FromFormat` except that it takes exactly two
    arguments.
 
 
diff --git a/Doc/c-api/dict.rst b/Doc/c-api/dict.rst
index 89db16e..4b966fb 100644
--- a/Doc/c-api/dict.rst
+++ b/Doc/c-api/dict.rst
@@ -190,8 +190,8 @@
 .. cfunction:: int PyDict_Merge(PyObject *a, PyObject *b, int override)
 
    Iterate over mapping object *b* adding key-value pairs to dictionary *a*.
-   *b* may be a dictionary, or any object supporting :func:`PyMapping_Keys`
-   and :func:`PyObject_GetItem`. If *override* is true, existing pairs in *a*
+   *b* may be a dictionary, or any object supporting :cfunc:`PyMapping_Keys`
+   and :cfunc:`PyObject_GetItem`. If *override* is true, existing pairs in *a*
    will be replaced if a matching key is found in *b*, otherwise pairs will
    only be added if there is not a matching key in *a*. Return ``0`` on
    success or ``-1`` if an exception was raised.
diff --git a/Doc/c-api/import.rst b/Doc/c-api/import.rst
index de03f6e..ffbabbc 100644
--- a/Doc/c-api/import.rst
+++ b/Doc/c-api/import.rst
@@ -124,8 +124,8 @@
    If *name* points to a dotted name of the form ``package.module``, any package
    structures not already created will still not be created.
 
-   See also :func:`PyImport_ExecCodeModuleEx` and
-   :func:`PyImport_ExecCodeModuleWithPathnames`.
+   See also :cfunc:`PyImport_ExecCodeModuleEx` and
+   :cfunc:`PyImport_ExecCodeModuleWithPathnames`.
 
 
 .. cfunction:: PyObject* PyImport_ExecCodeModuleEx(char *name, PyObject *co, char *pathname)
@@ -133,7 +133,7 @@
    Like :cfunc:`PyImport_ExecCodeModule`, but the :attr:`__file__` attribute of
    the module object is set to *pathname* if it is non-``NULL``.
 
-   See also :func:`PyImport_ExecCodeModuleWithPathnames`.
+   See also :cfunc:`PyImport_ExecCodeModuleWithPathnames`.
 
 
 .. cfunction:: PyObject* PyImport_ExecCodeModuleWithPathnames(char *name, PyObject *co, char *pathname, char *cpathname)
diff --git a/Doc/c-api/unicode.rst b/Doc/c-api/unicode.rst
index b997629..4b89f49 100644
--- a/Doc/c-api/unicode.rst
+++ b/Doc/c-api/unicode.rst
@@ -305,10 +305,10 @@
    |                   |                     | *NULL*).                       |
    +-------------------+---------------------+--------------------------------+
    | :attr:`%S`        | PyObject\*          | The result of calling          |
-   |                   |                     | :func:`PyObject_Str`.          |
+   |                   |                     | :cfunc:`PyObject_Str`.         |
    +-------------------+---------------------+--------------------------------+
    | :attr:`%R`        | PyObject\*          | The result of calling          |
-   |                   |                     | :func:`PyObject_Repr`.         |
+   |                   |                     | :cfunc:`PyObject_Repr`.        |
    +-------------------+---------------------+--------------------------------+
 
    An unrecognized format character causes all the rest of the format string to be
@@ -325,7 +325,7 @@
 
 .. cfunction:: PyObject* PyUnicode_FromFormatV(const char *format, va_list vargs)
 
-   Identical to :func:`PyUnicode_FromFormat` except that it takes exactly two
+   Identical to :cfunc:`PyUnicode_FromFormat` except that it takes exactly two
    arguments.
 
 
@@ -375,7 +375,7 @@
 :cdata:`Py_FileSystemEncoding` should be used as the encoding, and
 ``"surrogateescape"`` should be used as the error handler (:pep:`383`). To
 encode file names during argument parsing, the ``"O&"`` converter should be
-used, passsing :func:`PyUnicode_FSConverter` as the conversion function:
+used, passsing :cfunc:`PyUnicode_FSConverter` as the conversion function:
 
 .. cfunction:: int PyUnicode_FSConverter(PyObject* obj, void* result)
 
@@ -388,7 +388,7 @@
 
 
 To decode file names during argument parsing, the ``"O&"`` converter should be
-used, passsing :func:`PyUnicode_FSDecoder` as the conversion function:
+used, passsing :cfunc:`PyUnicode_FSDecoder` as the conversion function:
 
 .. cfunction:: int PyUnicode_FSDecoder(PyObject* obj, void* result)
 
@@ -407,7 +407,7 @@
 
    If :cdata:`Py_FileSystemDefaultEncoding` is not set, fall back to UTF-8.
 
-   Use :func:`PyUnicode_DecodeFSDefaultAndSize` if you know the string length.
+   Use :cfunc:`PyUnicode_DecodeFSDefaultAndSize` if you know the string length.
 
 
 .. cfunction:: PyObject* PyUnicode_DecodeFSDefault(const char *s)
