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