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 2010-08-20 07:22:30
第一種情況下,它會發出警告 – Alam 2010-08-20 07:25:34
對,那是我排序然後。爲此道歉:-) – paxdiablo 2010-08-20 07:41:35