C Пустой указатель вопрос - PullRequest
5 голосов
/ 08 июля 2010

У меня есть функция grep в C (встроенное программирование), которая принимает пустой указатель в качестве параметра. функция должна иметь возможность обрабатывать различные типы переменных, такие как chars int и long. Как я могу кодировать функцию, чтобы она сама могла определить, какой тип переменной я передаю ?? Я не знаю, возможно ли это. спасибо

т.


void grep( void *t ) 
{ 
   if( t == char ) 
   { 
      do this 
   } 
   if( t == int ) 
   { 
      do that  
   }  
   ... 
}

Ответы [ 12 ]

0 голосов
/ 08 июля 2010

Если вы знаете типы, с которыми вы будете работать до этого, вы можете определить функцию grep для каждого типа, например:

grep_int(int* pi);
grep_char(char* pc);
grep_float(float* pf);

Также определите макрос как

#define GREP(T, TPTR_VAR) grep_##(TPTR_VAR)

Таким образом, звонок типа GREP(int, pi) будет переведен на grep_int(pi)

0 голосов
/ 08 июля 2010

Как отмечает Марк, это невозможно, но вы можете сделать перегруженные версии для ожидаемых вами типов.

Редактировать: Исправление, вы можете создать аналогичные функции для обработки разных типов:

void grep_c( char *t ) 
{ 
    do this 
}

void grep_i( int *t ) 
{ 
    do that  
}

Я недавно слишком много писал на C ++!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...