我正在製作一個ncurses應用程序,並且我遇到了令人困惑的事情。爲什麼我在使用ncurses時沒有一個名爲「refresh」的成員?
如果你有一個名爲成員的struct「刷新」這是一個函數指針,並調用該函數後,您將獲得以下編譯時錯誤:
main.c:20:10: error: ‘Point’ has no member named ‘wrefresh’
point.refresh();
這裏有一個小測試你可以嘗試編譯:
#include <ncurses.h>
typedef struct PointStruct Point;
void Point_refresh() {
}
struct PointStruct {
int x;
int y;
void (*refresh)();
};
int main() {
Point point;
point.x = 0;
point.y = 0;
point.refresh = &Point_refresh;
point.refresh();
}
這會給你上面提到的錯誤。但是,如果您取出包含ncurses的第一行,則它將在沒有問題的情況下編譯。
這對ncurses不起作用的原因是什麼,並有解決方法嗎?這不是什麼大不了的事情,只是輕微的煩惱,我不得不重新命名該成員。
還有另外一種方法:在函數名稱周圍加上括號。 – ooga
我認爲,這種治療比這種疾病更糟。 –
啊,這很有道理! – RylandAlmanza