In Linux C/C ++ programming, the error "error: Expected expression before 'struct '" is often encountered. This error is generally caused by undefined macros (macro-set macros) or parameters, the compiler may determine that the current statement is invalid in the following situations.
1. the header file IOCTL. H is missing.
The ioctl function cannot be compiled when vidioc_querycap is used.
Solution:
# Include <sys/IOCTL. h>
2. # define Error
For example:
# Define x = 5
Int z = x + 1;
Solution:
Fix # define definition. In addition, complicated expression macro definition is also encountered. If there are still undefined macros or parameters in the definition, this article will report errors. For example:
# Define ctl_header_len (offsetof (struct ntp_control, data ))
Int shouldbesize = (ctl_header_len + Count + 3 )&~ 3;
The reason is that there is no header file containing the offsetof function. After adding # include <stddef. h>, there is no error.
3. C/C ++ reserved words are used
For example:
Typedef struct {
Int X;
} Struct;
Solution:
Modify the struct typedef name. It is generally not recommended to use a reserved word name.