954,505 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

What is the use of #define _REENTRANT in my code?

Hi,
I am having problems with my C++ Programs on Sun Solaris server since I have upgraded my C++ compiler from Sun Forte Developer 7 compiler to Sun Studio 9 C++ complier 5.6.

I have my own string class which I had issues but now compiles ok after puting option -library=iostream in my makefile.

My string library make file has " /opt/SUNWspro/bin/CC -g -xs -xar -library=iostream -YP " options wwhile compiling.

After creating my libraries, I compiled my main C++ program, which compiles OK but when I execute I get following error.

"getfile: syntax error at line 2 : `newline or ;' unexpected"

getfile.c is my c++ program which has following code at the start.
-------------------------------------------------
#include
#include
#include
#include
#include
#define _REENTRANT
#include
#include
#include
-----------------------------------------------------
I can't understand where in line 2 I am having errors.

If I remove _REENTRANT then I get the following error
"The function "strtok_r" must have a prototype." which I have used in my code in the same getfile.c program.

Any suggestions comments will be very much appreciated.

Thanks
Ravi

rbhave
Newbie Poster
3 posts since Oct 2006
Reputation Points: 10
Solved Threads: 0
 

If it is your code, and you wrote that line, how come you are asking us what the meaning of that particular line is? Anyway, judging from the meaning of the word Re-entrant, that would mean that this program is designed to be run in multiple threads, and very well maybe a compiler specific flag. You better refer the compiler documentation or the program documentation if it was not written by you. Anyother things would be difficult to say unless we see the relevant source code.

WolfPack
Postaholic
Moderator
2,051 posts since Jun 2005
Reputation Points: 572
Solved Threads: 115
 
If it is your code, and you wrote that line, how come you are asking us what the meaning of that particular line is? Anyway, judging from the meaning of the word Re-entrant, that would mean that this program is designed to be run in multiple threads, and very well maybe a compiler specific flag. You better refer the compiler documentation or the program documentation if it was not written by you. Anyother things would be difficult to say unless we see the relevant source code.




Thanks for the prompt reply.
I have written the code few years back and copied most of it from HP Server earlier. I know _REENTRANT does in a sence that it allows the program to be multi threaded. But I could not understand when I removed it why I am geting the strtok error.
When I live it the REENTRANT code the program compiles without any errors/warnings but when I execute it it gives error at line 2
"getfile: syntax error at line 2 : `newline or ;' unexpected"
which I cann;t understand.
I have enclosed the getfile.c code which has lot of MQ related code and my own local include files, but if you look at the code there is nothing wrong at line 2.
Any more suggestions.
Thanks
Ravi

Attachments getfile.c (23.82KB)
rbhave
Newbie Poster
3 posts since Oct 2006
Reputation Points: 10
Solved Threads: 0
 

This is a long shot, but can you just try this and tell me what happens?

#ifndef _REENTRANT
#define _REENTRANT
#endif
 
#include <stdlib.h>
#include <unistd.h>
#include <ctype.h>
#include <iostream.h>
#include <cmqc.h>
#include <string.h>
#include <wait.h>
#include <sys/wait.h>
WolfPack
Postaholic
Moderator
2,051 posts since Jun 2005
Reputation Points: 572
Solved Threads: 115
 

This is a long shot, but can you just try this and tell me what happens?

#ifndef _REENTRANT
#define _REENTRANT
#endif
 
#include <stdlib.h>
#include <unistd.h>
#include <ctype.h>
#include <iostream.h>
#include <cmqc.h>
#include <string.h>
#include <wait.h>
#include <sys/wait.h>



Tried your suggestion in my getfile.c program and still the same error.
Thanks
Ravi

rbhave
Newbie Poster
3 posts since Oct 2006
Reputation Points: 10
Solved Threads: 0
 

Sorry no idea. Never developed anything in the Solaris environment. So guess someone else will have to take over this thread.

WolfPack
Postaholic
Moderator
2,051 posts since Jun 2005
Reputation Points: 572
Solved Threads: 115
 

Take off the line #define _REENTRANT from your file
Instead use the following flag during compilation.
CC -c -D_SOLARIS_ -D_REENTRANT
Let me know if it fixed your problem.

psoma74
Newbie Poster
1 post since Jun 2010
Reputation Points: 9
Solved Threads: 0
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You