Skip to main content
`Ctrl`+`K`

# PetscCallExternalVoid

Calls an external library routine or user function after pushing the name of the routine on the stack.

## Input Parameters

- name - string that gives the name of the function being called

- routine - actual call to the routine, for example, `functionname(a,b)`

## Notes

Often one should use `PetscCallExternal()` instead. This routine is intended for external library routines that DO NOT return error codes. They may return a value or may return `void`.

In debug mode this also checks the memory for corruption at the end of the function call.

Certain external packages, such as BLAS/LAPACK may have their own macros, `PetscCallBLAS()` for managing the call, error checking, etc.

## Developer Note

This is so that when a user or external library routine results in a crash or corrupts memory, they get blamed instead of PETSc.

## See Also

`PetscCall()`, `PetscStackPushNoCheck()`, `PetscStackPush()`, `PetscCallExternal()`, `PetscCallBLAS()` @*/ #define PetscCallExternalVoid(name, …)
do {
PetscStackPushExternal(name);
VA_ARGS;
PetscStackPop;
} while (0)

/*MC PetscCallExternal - Calls an external library routine that returns an error code after pushing the name of the routine on the stack.

## Input Parameters

- func - name of the routine

- args - arguments to the routine

## Notes

This is intended for external package routines that return error codes. Use `PetscCallExternalVoid()` for those that do not.

In debug mode this also checks the memory for corruption at the end of the function call.

Assumes the error return code of the function is an integer and that a value of 0 indicates success

## Developer Note

This is so that when an external package routine results in a crash or corrupts memory, they get blamed instead of PETSc.

## See Also

`PetscCall()`, `PetscStackPushNoCheck()`, `PetscStackPush()`, `PetscCallExternalVoid()`, `PetscCallExternalAbort()`

## Level

developer

## Location

include/petscerror.h

Index of all Sys routines
Table of Contents for all manual pages
Index of all manual pages