Linux C/C++編程時常會遇到“error: expected expression before ‘struct’”錯誤,此錯誤一般是由未定義的宏(宏裡套宏)或參量引起,導致編譯器判斷當前語句為非法語句,可能有如下幾種情況。
調用ioctl函數,用到參數VIDIOC_QUERYCAP時無法編譯通過。
解決辦法:
#include <sys/ioctl.h>
比如:
#define X =5
int z=X+1;
解決辦法:
修正#define定義,此外,還會遇到復雜表達式宏定義,裡面如果仍有未定義的宏或參量,一樣會報告本文錯誤。
比如:
typedef struct {
int x;
}struct;
解決辦法:
修改結構體typedef名稱,一般不建議使用保留字命名。