PetscHasAttribute#
Determine whether a particular attribute is supported by the compiler
Synopsis#
#include <petscmacros.h>
int PetscHasAttribute(name)
Input Parameter#
name - The name of the attribute to test
Notes#
name should be identical to what you might pass to the attribute declaration itself – plain, unbroken text.
As PetscHasAttribute() is wrapper over the function-like macro __has_attribute(), the
exact type and value returned is implementation defined. In practice however, it usually
returns 1 if the attribute is supported and 0 if the attribute is not supported.
Example Usage#
Typical usage is using the preprocessor
#if PetscHasAttribute(always_inline)
# define MY_ALWAYS_INLINE __attribute__((always_inline))
#else
# define MY_ALWAYS_INLINE
#endif
void foo(void) MY_ALWAYS_INLINE;
but it can also be used in regular code
if (PetscHasAttribute(some_attribute)) {
foo();
} else {
bar();
}
See Also#
PetscHasBuiltin(), PetscDefined(), PetscLikely(), PetscUnlikely(),
PETSC_ATTRIBUTE_FORMAT, PETSC_ATTRIBUTE_MAY_ALIAS
Level#
intermediate
Location#
Index of all Sys routines
Table of Contents for all manual pages
Index of all manual pages