[英]Struct function pointer error
在結構my_struct中,有一個函數指針稱為compute()。 聲明如下:
struct my_struct
{
double (*compute) (double input);
}
在一個單獨的文件中,我初始化了該結構,因此可以將該函數指向另一個函數。
static const struct my_struct data;
data.compute = ......
問題是,無論我將函數指針設置為什么,都會對data.compute產生以下錯誤:
error: expected '=', ',', ';', 'asm', or '__attribute__' before '.' token
我已經多次使用'。'來使用結構的數據成員。 運算符,但我從未使用過函數指針。 這里需要其他東西嗎?
盡管您已經將結構定義為const
,但是它應該可以在符號上起作用,但是您只能對其進行初始化,而不能在初始化后分配給它。
但是,這是與您得到的錯誤不同的錯誤。 它表現得好像data
不是一個簡單的單詞,就像它在宏中擴展為奇數或沿這些線的東西一樣。 結構類型是在標頭中聲明的,不是嗎? 並且在}之后確實有分號,不是嗎?
是的,
const
不是問題。 我試着刪除它,只是得到相同的錯誤。 知道如何解決您正在談論的最后一部分嗎?
一方面,沒有足夠的代碼-您沒有提供MCVE( 最小,完整和可驗證的示例 )-我們沒有可編譯的代碼,也看不到您看到的錯誤(或類似錯誤)。 我們需要您的標頭和少量顯示該問題的代碼。
您正在將data.compute = …
寫入函數內部,不是嗎? ( 嗯:我懷疑不是 -您必須使用初始化… data = { … };
或將賦值移動到函數內部。)
不,它不在函數中。 您能否詳細說明
… data = { … };
? 我不了解這種語法; 第一個…
代表什么?
第一個…
是static const struct my_struct
但是我覺得太懶了以至於無法復制粘貼。 因此,您需要:
static const struct my_struct data = { .compute = sin };
或類似的內容(假設您包括<math.h>
來提供sin
的聲明-或使用已經聲明或定義的其他函數)。 如果您沒有使用C99或更高版本的編譯器而陷入困境):
static const struct my_struct data = { sin };
您不能在函數之外編寫分配,這就是您的問題。 您必須使用初始化程序,或在函數內部編寫賦值並刪除const
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.