int d() {return 0;} int i() {return 7;}
struct a { int(*b)(); }c={d};
typedef struct e{ struct a f; }g;
main() { struct e *h; h->f.b = i; }
У меня возникает ошибка сегментации, когда я пытаюсь запустить эту программу. Может ли кто-нибудь обосновать причину?Ошибки указателя на конструкции
И я также пытался как
int d() {return 0;} int i() {return 7;}
struct a { int(*b)(); }c={d};
typedef struct e{ struct a f; }g;
main() { struct e *h; h = (g)malloc(sizeof(g)); h->f.b = i; }
Сейчас я получаю сообщение об ошибке, как
funptrinstrct.c: In function `main': funptrinstrct.c:17: error: conversion to non-scalar type requested
Ответ на это также будет заметно.
Вы все еще можете использовать 'g' просто отлично, проблема была просто в том, что это не был указатель. И ваша мораль (как бы снисходительная) не имеет значения, поскольку это была ошибка, а не предупреждение. Трудно игнорировать то, что не даст вам исполняемого кода :-) – paxdiablo
Для первого случая он дает предупреждение – Alam
Правильно, это меня отсортировали тогда. Извиняюсь за это :-) – paxdiablo