Difference between revisions of "BoostC Inline Functions"
Russ hensel (talk | contribs) |
Russ hensel (talk | contribs) |
||
Line 38: | Line 38: | ||
== #define with Arguments -- Some Details == | == #define with Arguments -- Some Details == | ||
− | == Inline Details == | + | == Inline C -- Some Details == |
For this method you qualify the function with the keyword inline. According to the manual you can do anything you would with any other function. Perhaps. | For this method you qualify the function with the keyword inline. According to the manual you can do anything you would with any other function. Perhaps. | ||
Line 52: | Line 52: | ||
*You can not debug ( source code ) into the function. | *You can not debug ( source code ) into the function. | ||
+ | == Inline Assmebler Code -- Some Details == | ||
+ | |||
+ | This type of inline code is not a function it is simply a way of including assembler in the middl of, or inline with C code. Not explained here yet. The manual is pretty good on this topic. | ||
== Source Code Using Inline Functions == | == Source Code Using Inline Functions == |
Revision as of 18:02, 10 March 2009
Inline functions are statements that look like functions but do not really call anyting or return, the code is generated right "inline" with the statements before and after the "function call". There are a couple of different ways to do this, and a couple of different reasons to do it.
Contents
Ways
- Using a #define
- Using a #define with arguments
- Using a inline qualifier in the function definition
- Using assembler inline
Reasons
- Smaller faster code -- sometimes, sometimes not. ( the first time it is used, your save the code for subroutine linkage, the second time you call you have two copies of the function )
- Avoid too deep a call return stack.
Since there is no call/return the stack usage is zip.
- Make changes to code easier.
If the code would normally have to be changed in many places, changing the definition of the "function" can allow all the changes to be made in one place.
- Make code more readable.
If a subroutine is called only in one place, it may still make the code more readable by using an inline function to hide or "chunk" low level details.
- Remove the chance of calling a function from both the main line and the interrupt
Because there are actually two different versions of the function.
#define -- Some Details
all of a #define must be contained on one line, but a function typically requires several lines. The lines can be simulated by the required ";" the end of statement marker, but you can still run out of line length. You can combine different lines by using the line xxxx characer "\" at the end of a line. This lets you change:
to
Much more readable and you do not run out of line length.
--- all this needs to be completed and verified in boostc
#define with Arguments -- Some Details
Inline C -- Some Details
For this method you qualify the function with the keyword inline. According to the manual you can do anything you would with any other function. Perhaps.
Pros:
- Looks just like any other function.
- Easy to change back and forth with a one word change.
- Can be used with arguments and returned values.
Cons:
- You can not debug ( source code ) into the function.
Inline Assmebler Code -- Some Details
This type of inline code is not a function it is simply a way of including assembler in the middl of, or inline with C code. Not explained here yet. The manual is pretty good on this topic.