2013-06-19 2 views
0

По существу, я имитирую объектно-ориентированное программирование в базовом C, по необходимости. Для моего удобства я хотел бы использовать макрос или встроенную функцию, чтобы уменьшить количество кода, который мне нужно написать. Для моих 400+ переменных, каждая из них должна структура, какКак использовать макрос/встроенную функцию C с именем переменной?

int x; 
int get_x(){ 
    return x; 
} 
void set_x(int a){ 
    x = a; 
} 

Я надеялся, что там был какой-то умный способ написать это как макро Oneliner, так что я могу кормить тип foo(x) и он будет заменить его со всем, что код. Сложность, я думаю, заключается в использовании переменной x в виде строки, чтобы ее можно было использовать в названиях функций.

Есть ли какой-нибудь C-гуру, который раньше сталкивался с подобными вещами?

+1

Я думаю, вам нужно объяснить еще кое-что о вашей мотивации, потому что для меня использование 'x' для представления значения кажется более интуитивным, чем' get_x() 'для простого примера, представленного выше. – jxh

ответ

1
#define MAKE_OOP_VAR(var_type, var_name) \ 
var_type var_name; \ 
var_type get_##var_name() { return var_name; } \ 
void set_##var_name(var_type tmp) { var_name = tmp; } \ 

MAKE_OOP_VAR(int, x); 

Не скомпилирован, но с верхней части головы.

+0

Это абсолютно идеально, работает как шарм. Бесконечно благодарен. Какова функция '##'? –

+0

@James Конкатенация в макросах, так что она объединяет имя переменной в имя функции вместо того, чтобы называть ее get_var_name, она расширяет ее, чтобы вместо нее get_x –

Смежные вопросы