2015-06-06 2 views
1

У меня есть одно сомнение, это может быть возможным, чтобы создать одинтипа преобразования в одной функции в C

typedef struct whatever 

, а затем, если одна функция требует:

void function(char * something); 

при вызове функции в основная программа записи:

function((char *) whatever); 

что это правильно?

Спасибо!

+0

Зависит от того, что вы подразумеваете под «правильным». Скомпилирует ли он? Возможно, в зависимости от компилятора. Это будет работать? Трудно сказать, так как вы не указали, что это значит для этого работать. –

ответ

2

Не существует определенного поведения для приведения структуры к любому типу указателя. Скорее всего, ваш компилятор откажется от такого приведения, но если он его примет, то получившееся поведение вряд ли будет полезно.

Кроме того, вы не можете передать тип (т. Е. whatever) в качестве аргумента функции.

Вы, вероятно, можете передать указатель на объект вашего типа:

int main() { 
    whatever my_whatever = { 0 }; 
    function((char *) &my_whatever); 
} 

Это будет работать для некоторого определения «работы». Является ли это разумным, зависит от реализации function().

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