Zoeken…


Opmerkingen

Het belangrijkste verschil tussen macro's en functies is dat macro's worden geëvalueerd in de huidige context, terwijl functies een nieuw bereik openen in de huidige context. Variabelen die binnen functies zijn gedefinieerd , zijn dus niet bekend nadat de functie is geëvalueerd. Integendeel, variabelen in macro's worden nog steeds gedefinieerd nadat de macro is geëvalueerd.

Simple Macro om een variabele te definiëren op basis van invoer

macro(set_my_variable _INPUT)
  if("${_INPUT}" STREQUAL "Foo")
    set(my_output_variable "foo")
  else()
    set(my_output_variable "bar")
  endif()
endmacro(set_my_variable)

Gebruik de macro:

set_my_variable("Foo")
message(STATUS ${my_output_variable})

zal afdrukken

-- foo

terwijl

set_my_variable("something else")
message(STATUS ${my_output_variable})

zal afdrukken

-- bar

Macro om een variabele met een bepaalde naam te vullen

macro(set_custom_variable _OUT_VAR)
  set(${_OUT_VAR} "Foo")
endmacro(set_custom_variable)

Gebruik het met

set_custom_variable(my_foo)
message(STATUS ${my_foo})

die zal afdrukken

-- Foo


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow