error: initializer expression list treated as compound expression

I had seen this error for the first time .....
error: initializer expression list treated as compound expression
please help....

This sounds like a compiler error. We need a LOT more information.

I dont know why it has occured .........
but when I compiled my program again after some time taking ....having some modifications in my code i.e collecting a return value of a function in a variable then this problem disappears....and my code working correctly....

but today when I again not collecting the return value of a function then also its working correctly...........

why so???????????

We don't know what operating system, what programming language or what compiler you are using.

We have no idea what code it is you had that failed to compile, we have no idea what changes you made.

So we're in more of the dark than you.

Operating system, --> Linux(Fedora 6)
Programming language or what compiler --> C++/g++ compiler

What changes I had made.--> first of all I was calling my own made function and not collecting what it is returning.....then I simply taken a variable and collected a returned value from that function.......that compilation error then disappers.

I am not using the concept of class here simply defining a function and calling it main.

So I just only want to know that what that error means because I had never seen it before & what is compound expression?????????

Why not post the offending section of source code with immediate surrounds and any appropriate prototypes, it might help us tell you what may be going on.

If you do a good for "error: initializer expression list treated as compound expression" there are many cases of people having that error.

ok...........here is the section of my code..........

from main I am Calling function.......
setup_ipc("msqueue",1234,INPUT_IPC,LARGE_QUEUE);
and its defination is in another *.cpp file

and here is its defination
int setup_ipc (const char * ipc_name, long base_add, int io_type, int ipc_qtype)
{
char sbuffer[FILENAMELEN + 1];
key_t msg_key;
int msg_flag;
if ((io_type != INPUT_IPC && io_type != OUTPUT_IPC) ||
(ipc_qtype != SMALL_QUEUE && ipc_qtype != LARGE_QUEUE &&
ipc_qtype != PRI_QUEUE && ipc_qtype != MAIL_BOX &&
ipc_qtype != SOCKET_QUEUE)) {return(-1);}

if \(!\(*ipc_name\)\) \{return\(-1\);\}

/** look for the end of ipc_tbl **/
lipc_tbl = &ipc_lhead;
for \(ipc_tbl = ipc\_lhead.ipc_nextent; ipc\_tbl;lipc_tbl = ipc_tbl, ipc_tbl = ipc\_tbl->ipc_nextent\);

ipc_tbl = \(struct ipc_ent *\) malloc\(sizeof\(struct ipc_ent\)\);
if \( !ipc_tbl \) \{return\(-1\);\}

/** init table entry variables **/
strncpy\(sbuffer, ipc_name, FILENAMELEN\);
sbuffer[FILENAMELEN - 1] = '\\0';
sprintf\(ipc_tbl->fname, "%s", sbuffer\);
ipc\_tbl->ipc_tag = \+\+ipc_ecnt;
ipc\_tbl->io_type = io_type;
ipc\_tbl->vlmsg_id = -1;
ipc_tbl->sockfd = -1;
ipc\_tbl->vlkey_id = base_add;
ipc_tbl->qtype = ipc_qtype;
ipc\_tbl->ipc_nextent = NULL;

/** open message queue **/
if \(ipc_qtype != SOCKET_QUEUE\) 
\{
	msg_key = ipc\_tbl->vlkey_id;
	if \(io_type == INPUT_IPC\)
	msg_flag = IPC_CREAT | IPC_EXCL | 0666;
	else
	msg_flag = 0666;

	errno = 0;
	while \(\(ipc\_tbl->vlmsg_id = msgget\(msg_key, msg_flag\)\) < 0 && errno == EEXIST\)
	\{
	errno = 0;
	msg_key\+\+;
	\} 

	if \(errno != 0\)
	\{	// error other than EEXIST occurs 
	free\(ipc_tbl\);
	return\(-1\);
	\}

	ipc\_tbl->vlkey_id = msg_key;
\}
  1. Where is the error being raised? During compilation of which file, and what line does the line number indicate?

  2. Do you have a common header file defining the prototype for "setup_ipc()"?

Also I want to tell that I am using Makefile for compilation of my code and I had created my makefile with the help of qmake tool....

error being raised during compilation......in main.cpp file

and error was in main.cpp indicating line having that function call------->>>>
setup_ipc("msqueue",1234,INPUT_IPC,LARGE_QUEUE);

Also i am using the common header file for defining the prototype of setup_ipc()..

It looked like it was trying to treat setup_ipc as a variable rather than a function.

Do you use

extern "C" 
{
...
}

around function declarations?

no I hadn't used extern

I had made the change that is :::::::
collecting whatever my function is returning like this::::::::
i=setup_temp_ipc("msqueue",1234,INPUT_IPC,LARGE_QUEUE);

then its compiled correctly without any error....

So what is setup_temp_ipc()? I thought you had a function called setup_ipc().

oh.....sorry thats another function...........

I mean to say that I had used....
i=setup_ipc("msqueue",1234,INPUT_IPC,LARGE_QUEUE);
instead of
just calling ::
setup_ipc("msqueue",1234,INPUT_IPC,LARGE_QUEUE);