Commits

Armin Rigo committed f37a06c

Document the workaround for taking pointers to functions.

Comments (0)

Files changed (1)

doc/source/index.rst

 
 Aside from these limitations, functions and callbacks can return structs.
 
+CPython only: for performance, ``ffi.verify()`` returns functions as
+objects of type ``<built-in function>``.  They are not ``<cdata>``, so
+you cannot e.g. pass them to some other C function expecting a function
+pointer argument.  Only ``ffi.typeof()`` works on them.  If you really
+need a pointer to the function, use the following workaround::
+  
+    ffi.cdef(""" int (*foo)(int a, int b); """)
+
+i.e. declare them as pointer-to-function in the cdef (even if they are
+regular functions in the C code).
+
 
 Variadic function calls
 -----------------------
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.