Re: "PORTING C" > How to assign a value to a define statement?
Robby <Robby@discussions.microsoft.com> wrote:
I am running into a situation where I need some advice on how to do
things. Perhaps I am seeing this the wrong way. In summary, from
main(), I would like to call a defined macro called
"Config_delay_timers", and in that macro I would like to do some
calculations where the result can be assigned to the value of another
This makes no sense. Macros a just text substitutions, performed at =
compile time. If you want to calculate a value at run time, you need a =
variable for it.
Please view the following code:
// *** SYSTEM OSCILLATION *** //
#define Config_delay_timers(extCrys, fpllidiv, fpllmul, fpllodiv) \
FREQ = =
#define CURR_SYS_OSC FREQ
#define OSC_PERIOD (1.0/CURR_SYS_OSC)
#endif // TEST_H //
Config_delay_timers(8, 2, 21, 8);
Well, since you are hardcoding all the constants anyway, why not =
something like this:
#define extCrys 8
#define fpllidiv 2
#define fpllmul 21
#define fpllodiv 8
#define FREQ =
If, on the other hand, you expect these values to change from run to =
run, then you need real functions to calculate them and real variables =
to store them.
So how is one supposed to carry out a particular
calculation via a define macro and then further assign this result to
other define variables in the program.
One is not supposed to.
With best wishes,
With sufficient thrust, pigs fly just fine. However, this is not =
necessarily a good idea. It is hard to be sure where they are going to =
land, and it could be dangerous sitting under them as they fly overhead. =
-- RFC 1925