Update documentation.
This commit is contained in:
1 parent
a3827cc384
commit
3c175b9199
1 file changed
+20
-5
@@ -6206,12 +6206,26 @@ when the bracket associated to the M\_LET go out of scope.
|
|||||||
|
|
||||||
If 'var1' (resp. var2, ...) has the form (v1, arguments...),
|
If 'var1' (resp. var2, ...) has the form (v1, arguments...),
|
||||||
then the variable 'v1' will be initialized with the
|
then the variable 'v1' will be initialized with the
|
||||||
contains of 'arguments...' given to the specialized initializer
|
contains of 'arguments...'.
|
||||||
operator INIT\_WITH
|
If 'arguments' is within parenthesis
|
||||||
(and not the empty initializer INIT operator).
|
or if there is more one argument
|
||||||
An argument shall not contain any comma or it shall be
|
or if the property LET\_AS\_INIT\_WITH is defined,
|
||||||
|
it will use the operator INIT\_WITH if it exists to emplace the variable
|
||||||
|
with the given arguments (The arguments are expected to be compatible with
|
||||||
|
the INIT\_WITH operator).
|
||||||
|
Otherwise it will use the operator INIT\_SET (argument is expected
|
||||||
|
to be the same type as the initialized type).
|
||||||
|
In both cases, the empty initializer INIT operator is not called.
|
||||||
|
|
||||||
|
LIMITATION:
|
||||||
|
An argument shall not contain any comma or it shall be put
|
||||||
between parenthesis. In particular, if the argument is a compound
|
between parenthesis. In particular, if the argument is a compound
|
||||||
litteral the full compound litteral shall be put between parenthesis.
|
litteral the full compound litteral shall be put between parenthesis
|
||||||
|
and casted to the right type outside the parenthesis (due to the conflict
|
||||||
|
with the INIT\_WITH detection it is needed to put something outside the
|
||||||
|
parenthesis like a cast).
|
||||||
|
|
||||||
|
An argument shall not have any post effect when it is evaluated.
|
||||||
|
|
||||||
There shall be at most one M\_LET macro per line of source code.
|
There shall be at most one M\_LET macro per line of source code.
|
||||||
|
|
||||||
@@ -6219,6 +6233,7 @@ Example:
|
|||||||
|
|
||||||
M_LET(a, STRING_OPLIST) { do something with a } or
|
M_LET(a, STRING_OPLIST) { do something with a } or
|
||||||
M_LET(a, b, c, string_t) { do something with a, b & c }
|
M_LET(a, b, c, string_t) { do something with a, b & c }
|
||||||
|
M_LET( (a, ("Hello")), string_t) { do something with a }
|
||||||
|
|
||||||
NOTE: The user code shall not perform a return or a goto (or longjmp) outside the {} or a call to an exit function
|
NOTE: The user code shall not perform a return or a goto (or longjmp) outside the {} or a call to an exit function
|
||||||
otherwise the clear code of the object won't be called .
|
otherwise the clear code of the object won't be called .
|
||||||
|
|||||||
Reference in new issue
Block a user