c++ - #define an array value with index -
for legacy reasons need maintain old array structure(s), compiler tells me there problem 'expression syntax'.
here's have:
#define array[globalindexvariable] get(globalindexvariable)->subtype;
get
returns valid pointer struct, contains subtype
now imagined take every occasion of array[globalindexvariable]
, convert function call, apparently mistaken.
i don't know search in context, little highly appreciated.
thank much.
edit: since asked, here 1 of lines throw error:
localvariable = array[globalindexvariable];
i wish stress, i'm not looking make macro
, rather want replace array[globalindexvariable];
get(globalindexvariable)
, other globalindexvariable
used, replacement fail , throw different error.
edit:
just make absolutely sure understood:
right have 4 long arrays of type int
. want stuff these struct both mark belong (they describe different aspects of same thing) need bulk solution previous code fragments (a few thousand occurrences).
old:
int index = 2; int array1[anz] = { 0, 1, 2 }; int array2[anz] = { 0, 1, 2 }; int array3[anz] = { 0, 1, 2 }; int array4[anz] = { 0, 1, 2 }; if(array1[index] == 2) //dosomething
new:
struct { int type, conf, foo, bar; }; if(array1[index] == 2) //dosomething
without touching array1[index] == 2
, possible use define or else exact same behavior before old code?
with custom type, may do
struct mytype { int& operator[](int index) const { return get(globalindexvariable)->subtype; } }; #define array mytype{}
and then
array[globalindexvariable]
will replaced by
mytype{}[globalindexvariable]
which calls
get(globalindexvariable)->subtype;
Comments
Post a Comment