#define PUMP [0,1]
when I call a function like this:
for (index = 0;index < 8; index++)
{
get_motor_current(PUMP[index]);
}
The intent is to do get_motor_current([0][index]) and get_motor_current([1][index])
Thank you very much.
You can do it by having the macro expand into a compound literal .
#include <stdio.h>
#define PUMP ((const int[]){0, 1})
int main(void) {
for (int index = 0;index < 2; index++)
{
printf("%d\n", PUMP[index]);
}
}
Long story short, you can't do what you're trying to do the way you're trying to do it. All the C preprocessor does is perform direct text substitutions. So, after preprocessing, your code snippet would look like:
for (index = 0;index < 8; index++)
{
get_motor_current([0,1][index]);
}
which is not valid C.
Also, square brackets []
are only used for indexing an existing array. If you want to initialize an array with a list of values, you write a list of values enclosed in curly braces {}
like so:
int some_array[] = {1, 2, 3, 4};
You don't need to define an array size here (ie say some_array[4]
) because the compiler just counts the number of items in the list and does that for you.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.