Can C determine which OS it's being compiled on?


 
Thread Tools Search this Thread
Top Forums Programming Can C determine which OS it's being compiled on?
# 1  
Old 12-23-2008
Can C determine which OS it's being compiled on?

Hello all! I've searched the archives, google, documentation and I can't seem to find any answer regarding my question.

Our code has to be lint free and due to the following lint warning --->
logical expression always true: op "||" <--- we are forced to #include <note.h > (which appears to be Solaris specific) in order to use "NOTE(CONSTCOND) /*CONSTCOND*/" within the code to suppress the above warning. Any ideas on whether or not standard C can determine an OS? Ideally, I'd like C to determine what OS and from there include the header or not based on OS . . . if SunOS, then include note.h, else do not. I know this is far-fetched Smilie but had to ask. TIA!

Steven


# 2  
Old 12-23-2008
Can you not use a shell script or a makefile to compile?

I don't know what the output from uname gives on your version of Solaris - the last time I did that it was SunOS a very long time ago - so this example uses that string
Code:
PLAT=""
uname | grep -q 'SunOS' && PLAT="-DSUNOS"
cc -o somefile $PLAT somefile.c

C code:
Code:
/* in C */
#ifdef SUNOS
#include <note.h>
#endif

# 3  
Old 12-24-2008
MySQL Thanks Jim!

It compiles on both Linux and Solaris. I've yet to try it on HP or AIX, but I imagine it will work. I've pasted the code just for the sake of anyone searching.

code:

#if defined(solaris)
#include <note.h>
#else
#define NOTE(ignore)
#endif
# 4  
Old 12-29-2008
The answer is yes. It is how source code handles differences between base platforms. Here is a pointer to more information on predefined operating system macros which should help you. Pre-defined Operating System Macros
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

How to reverse compiled bash (obfucation)?

hi guys, 10 years a go I wrote an script in bash programming and I compiled (obfuscate) it, but after 10 years I need to change some lines and remove some lines, but i do not remember what I've done. does anyone has any idea about decompile (deobfuscation) it? here is some line of my code (u... (3 Replies)
Discussion started by: mhsh0001
3 Replies

2. Solaris

Issue in pro*C program compiled in solaris 10

Hi, We upgraded our servers from solaris 9 to 10. We recompiled all the Pro*C programs with the new oracle version as well. Oracle is 11g. We are facing core dump with the below error for certain executions. But when we are placing new statements between the error fucntion we get junk values to... (1 Reply)
Discussion started by: saroopkris85
1 Replies

3. UNIX for Advanced & Expert Users

Viewing a compiled executable file

I've got a executable binary file (source code fortran77, compiled using gfortran). I'm not sure this is even possible but I remember someone I knew was able to view the source code that created this binary file, i.e. he used a program that enabled him to see what the source code was. Is this... (2 Replies)
Discussion started by: lost.identity
2 Replies

4. UNIX for Advanced & Expert Users

cannot run c compiled programs

iam in the way of making graphics using SDL.i copied from cd usign mount -a /cdrom cd /cdrom cp SDL-1.2.11.tar.gz /usr/test cd /usr/test gunzip SDL-1.2.11.tar.gz tar -xf SDL-1.2.11.tar cd SDL-1.2.11 ./configure ... ... it stops at checking whether the c compiler... (4 Replies)
Discussion started by: kumarangopi
4 Replies

5. UNIX for Dummies Questions & Answers

compiled software installed correctly?

Greetings all, first time poster. I have always had an interest in Unix and so decided to try and learn some on my own. I have learned a great deal by just lurking, so for those of you who patiently share your knowledge-thank you! I am in the process of compiling and installing some... (3 Replies)
Discussion started by: RobertSubnet
3 Replies

6. Programming

How to use a .exe with a compiled program.

I am confused about how to use a .exe file in unix along with a compiled C++ program. I've been using emacs and I compiled with g++, but I have no idea how that relates to use with a .exe. (1 Reply)
Discussion started by: adamsy
1 Replies

7. Programming

Why my code couldn't be compiled

#include <Xm/Xm.h> #include <Xm/PushB.h> Widget CreatePushbutton(Widget parent, char* name, XtCallbackProc callback, XtPointer client_data) { Widget push; Arg args; Cardinal n; n=0; push=XmCreatePushButton(parent, name, args, n); XtAddCallback(push,... (4 Replies)
Discussion started by: endeavour1985
4 Replies

8. UNIX for Dummies Questions & Answers

Compiled Compiler

I've got Solaris9 and it comes with no compiler. I've downloaded gcc from GNU, but you can't compile the files without the compiler (chicken before the egg situation). Some sites point to an ftp site of ftp.ai.prep.mit.edu where a compiled version of the GNU gcc exists, but when I have gone there... (3 Replies)
Discussion started by: AJA
3 Replies

9. UNIX for Advanced & Expert Users

Compiled Files

I am using SCO Unix with a Progress Database. There are files that 'pop up' and cause problems. I need to be able to read these files but they are compiled and I don't know how to un-compile them. Is there some kind of software / shareware that I can download to view these files? Is... (2 Replies)
Discussion started by: tripp4337
2 Replies

10. Programming

Running a compiled Program

Just getting into the Unix command line programming and am unable to run any program I write. I am using a Makefile and the source is compiling but when I enter the name of the output file I get back: bash: lab01exe.out: command not found I'm sure I am just dooing something simple... (2 Replies)
Discussion started by: Krebsbac
2 Replies
Login or Register to Ask a Question