簡體   English   中英

結構函數指針錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM