1,105,556 Community Members

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

Member Avatar
rbhave
Newbie Poster
3 posts since Oct 2006
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

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 <stdlib.h>
#include <unistd.h>
#include <ctype.h>
#include <iostream.h>
#include <cmqc.h>
#define _REENTRANT
#include <string.h>
#include <wait.h>
#include <sys/wait.h>
-----------------------------------------------------
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

Member Avatar
WolfPack
Posting Virtuoso
1,787 posts since Jun 2005
Reputation Points: 491 [?]
Q&As Helped to Solve: 135 [?]
Skill Endorsements: 15 [?]
Moderator
 
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.

Member Avatar
rbhave
Newbie Poster
3 posts since Oct 2006
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
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.

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)
Member Avatar
WolfPack
Posting Virtuoso
1,787 posts since Jun 2005
Reputation Points: 491 [?]
Q&As Helped to Solve: 135 [?]
Skill Endorsements: 15 [?]
Moderator
 
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>
Member Avatar
rbhave
Newbie Poster
3 posts since Oct 2006
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
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>

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

Member Avatar
WolfPack
Posting Virtuoso
1,787 posts since Jun 2005
Reputation Points: 491 [?]
Q&As Helped to Solve: 135 [?]
Skill Endorsements: 15 [?]
Moderator
 
0
 

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

Member Avatar
psoma74
Newbie Poster
1 post since Jun 2010
Reputation Points: -1 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
-1
 

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.

You
This article has been dead for over three months: Start a new discussion instead
Post:
Start New Discussion
Tags Related to this Article