Concatenating Variable Names in C?
Is it possible to concatenate variable names in C? Specifically, I have a struct
that contains 6 similar variables in it called class1
, class2
, class3
, etc.
I want to run through a for loop to assign each variable a value, but I can't see how to do it without somehow concatenating the variable name with the value of the for loop counter.
How else could I do this?
Solution 1:
When you find yourself adding an integer suffix to variable names, think I should have used an array.
struct mystruct {
int class[6];
};
int main(void) {
struct mystruct s;
int i;
for (i = 0; i < 6; ++i) {
s.class[i] = 1000 + i;
}
return 0;
}
Note: A C++ compiler will barf at this because of class
. You will need to figure out a different name for that field if you plan to compile this code as C++.
Solution 2:
There are dynamic languages where you can do this sort of thing - C is not one of these languages. I agree with Sinan - arrays or STL vectors are the way to go.
As a thought experiment - what would happen if you have 100,000 of these variables? Would you have 100,000 lines of code to initialise them?
Solution 3:
The C preprocessor can concatenate symbols, but have you considered just using an array?