error C2678
-
I am afraid that I cannot change that
enum
into #defines, because I have:na->flags |= flag;
where
FILE_FLAGS flag;
and na is struct level1, and inside this level1 struct, I have
struct level1
{
FILE_FLAGS flags;
....
};I have entered in some deadlock ? Please help me to solve this error ...
-
Of course you can change it to #defines. The definition of
FILE_FLAGS
then becomes anint
type. And then the rest of the code should compile correctly.I am not get something, so forgive me. I have moved those
enum
values as#defines
, but of course, now I get error fromstruct
: doesn't know who isFILE_FLAGS flags;
fromlevel1
struct./*
typedef enum {
FILE_READONLY = 0x00000001,
FILE_HIDDEN = 0x00000002,
FILE_SYSTEM = 0x00000004,FILE\_DIRECTORY = 0x00000010, FILE\_ARCHIVE = 0x00000020, FILE\_DEVICE = 0x00000040, FILE\_NORMAL = 0x00000080, FILE\_TEMPORARY = 0x00000100,
....
.....}FILE_FLAGS;
*/#define FILE_READONLY = 0x00000001
#define FILE_HIDDEN = 0x00000002
#define FILE_SYSTEM = 0x00000004of course, FILE_FLAGS enum has disappeared ... obviously, I don't understood something ... but what ?
struct level1
{
FILE_FLAGS flags; // <-- error
....
}; -
I am not get something, so forgive me. I have moved those
enum
values as#defines
, but of course, now I get error fromstruct
: doesn't know who isFILE_FLAGS flags;
fromlevel1
struct./*
typedef enum {
FILE_READONLY = 0x00000001,
FILE_HIDDEN = 0x00000002,
FILE_SYSTEM = 0x00000004,FILE\_DIRECTORY = 0x00000010, FILE\_ARCHIVE = 0x00000020, FILE\_DEVICE = 0x00000040, FILE\_NORMAL = 0x00000080, FILE\_TEMPORARY = 0x00000100,
....
.....}FILE_FLAGS;
*/#define FILE_READONLY = 0x00000001
#define FILE_HIDDEN = 0x00000002
#define FILE_SYSTEM = 0x00000004of course, FILE_FLAGS enum has disappeared ... obviously, I don't understood something ... but what ?
struct level1
{
FILE_FLAGS flags; // <-- error
....
};_Flaviu wrote:
struct level1 { FILE_FLAGS flags; // <-- error .... };
Try
struct level1
{
int flags; // <-- error
....
}; -
_Flaviu wrote:
struct level1 { FILE_FLAGS flags; // <-- error .... };
Try
struct level1
{
int flags; // <-- error
....
}; -
Ok, but even
flag
is comming as function parameter, just like this:static void SomeFunction(level1* na, FILE_FLAGS flag)
{
....
na->flags |= ~flag;
....
}So, I guess I cannot give up FILE_FLAGS
enum
... don't I ?Change this parameter to be
static void SomeFunction(level1* na, int flag)
{ -
I am not get something, so forgive me. I have moved those
enum
values as#defines
, but of course, now I get error fromstruct
: doesn't know who isFILE_FLAGS flags;
fromlevel1
struct./*
typedef enum {
FILE_READONLY = 0x00000001,
FILE_HIDDEN = 0x00000002,
FILE_SYSTEM = 0x00000004,FILE\_DIRECTORY = 0x00000010, FILE\_ARCHIVE = 0x00000020, FILE\_DEVICE = 0x00000040, FILE\_NORMAL = 0x00000080, FILE\_TEMPORARY = 0x00000100,
....
.....}FILE_FLAGS;
*/#define FILE_READONLY = 0x00000001
#define FILE_HIDDEN = 0x00000002
#define FILE_SYSTEM = 0x00000004of course, FILE_FLAGS enum has disappeared ... obviously, I don't understood something ... but what ?
struct level1
{
FILE_FLAGS flags; // <-- error
....
}; -
Add this line somewhere before the first reference to
FILE_FLAGS
:typedef int FILE_FLAGS;
-
I encounter another error if I made these modifications:
data->com = na->flags & ATTR_IS_COMPRESSED; // <-- error C2059: syntax error : '='
(where data->com is
int
) because nowATTR_IS_COMPRESSED
is#define
, not part ofenum FILE_FLAGS
...What is
data->com
?_Flaviu wrote:
because now
ATTR_IS_COMPRESSED
is#define
, not part ofenum FILE_FLAGS
That is not the reason. I can only assume that you have done a partial change and some parts of your code are still incorrect. If you still have the FILE_FLAGS enum then it is going to cause problems. It would probably help if you showed all the code portions that are connected. It is difficult to be certain of the answers when looking at only a single line of code.
-
I encounter another error if I made these modifications:
data->com = na->flags & ATTR_IS_COMPRESSED; // <-- error C2059: syntax error : '='
(where data->com is
int
) because nowATTR_IS_COMPRESSED
is#define
, not part ofenum FILE_FLAGS
... -
I still cannot see enough information. Please provide what I previously requested and reply to this message. Please do not email me personally.
-
I still cannot see enough information. Please provide what I previously requested and reply to this message. Please do not email me personally.
-
I still cannot see enough information. Please provide what I previously requested and reply to this message. Please do not email me personally.
The fact is like that: I have an error:
error C2059: syntax error : '='
the error is reported here:
data->com = na->flags & ATTR_IS_COMPRESSED;
where: data is a struct:
struct data
{
.....
int com;
...
};and na is
RECORD* na;
and RECORD is:
typedef struct {
....
....
int flags;
.....
}RECORD;and
ATTR_IS_COMPRESSED
is from here (from my modifications):
typedef int ATTR_FLAGS;
//typedef enum {
// ATTR_IS_COMPRESSED = 0x0001,
// ATTR_COMPRESSION_MASK = 0x00ff,
//}ATTR_FLAGS;#define ATTR_IS_COMPRESSED = 0x0001
#define ATTR_COMPRESSION_MASK = 0x00ff -
The fact is like that: I have an error:
error C2059: syntax error : '='
the error is reported here:
data->com = na->flags & ATTR_IS_COMPRESSED;
where: data is a struct:
struct data
{
.....
int com;
...
};and na is
RECORD* na;
and RECORD is:
typedef struct {
....
....
int flags;
.....
}RECORD;and
ATTR_IS_COMPRESSED
is from here (from my modifications):
typedef int ATTR_FLAGS;
//typedef enum {
// ATTR_IS_COMPRESSED = 0x0001,
// ATTR_COMPRESSION_MASK = 0x00ff,
//}ATTR_FLAGS;#define ATTR_IS_COMPRESSED = 0x0001
#define ATTR_COMPRESSION_MASK = 0x00ffNot sure why you posted all that back to front ... However there are a couple of simple mistakes:
#define
statements do not require an=
sign. They should be#define ATTR_IS_COMPRESSED 0x0001
#define ATTR_COMPRESSION_MASK 0x00ffThe name
data
refers to a struct definition, not a variable. You need something like:typedef struct
{
.....
int com;
...
} DATA;DATA* data;
I am assuming that you actually assign the memory required for both structures at some point further on.
-
Not sure why you posted all that back to front ... However there are a couple of simple mistakes:
#define
statements do not require an=
sign. They should be#define ATTR_IS_COMPRESSED 0x0001
#define ATTR_COMPRESSION_MASK 0x00ffThe name
data
refers to a struct definition, not a variable. You need something like:typedef struct
{
.....
int com;
...
} DATA;DATA* data;
I am assuming that you actually assign the memory required for both structures at some point further on.