Dear Friends!
Can Anybody help me to optimise the following c code size.
I have list of macro definition which i have to pass as argument to a function
example:
#define ABC_1 123
#define ABC_2 124
#define ABC_3 125
#define ABC_4 126
#define ABC_5 127
int main(void)
{
Function(ABC_1);
Function(ABC_2);
Function(ABC_3);
Function(ABC_4);
Function(ABC_5);
}
i tried token cancatenation but it doesn't help me while using loop.
Thanks in advance
|
Skilled contributor
|
![]() |
| 4Mar2010,23:50 | #2 |
|
The above code cannot be optimized becoz the # define is taken care by preprocessor.. Preprocessor knows nothing other that replacing the variable with the actual value before the compiler take the responsibility of compiling the code...nd since the logic of concatenation is never clear until and unless the code comes under the compiler, the preprocessor fails to replace the manipulated part with the actual value...
suin
like this
|
|
Mentor
|
![]() |
| 5Mar2010,14:31 | #3 |
|
ABC_1~5 are consecutive so you could use a for loop:
Code:
for (int i=ABC_1; i<=ABC_5; i++) Function(i); |
|
Skilled contributor
|
![]() |
| 5Mar2010,17:09 | #4 |
|
Quote:
Originally Posted by xpi0t0s
|
|
Newbie Member
|
|
| 5Mar2010,18:20 | #5 |
|
Quote:
Originally Posted by xpi0t0s |
|
Light Poster
|
|
| 6Mar2010,11:46 | #6 |
|
Hi suin, You mentioned that "it doesn't help me while using loop".Can you give me what you tried.If the numbers are not consecutive looping is very difficult in your case. So tell me what you have tried.
|
|
Mentor
|
![]() |
| 8Mar2010,04:03 | #7 |
|
You'll need to state the goal of the optimisation. The code as you've given it is pretty efficient. But the implication is that it doesn't do something you want it to. What is that?
|



