Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > how libraries work on different platforms

Reply
Thread Tools

how libraries work on different platforms

 
 
hmaher15@yahoo.com
Guest
Posts: n/a
 
      12-02-2007
Hello I am starter in this amazing language and in programming in
general and I am wondering how the stream library for example works
fine on many platforms
(Windows,Linux etc.) does the compiler come with different versions
of this library on each platform or the implementation of the library
works on all platforms.
 
Reply With Quote
 
 
 
 
Alf P. Steinbach
Guest
Posts: n/a
 
      12-02-2007
* http://www.velocityreviews.com/forums/(E-Mail Removed):
> Hello I am starter in this amazing language and in programming in
> general and I am wondering how the stream library for example works
> fine on many platforms
> (Windows,Linux etc.) does the compiler come with different versions
> of this library on each platform


Yes.


> or the implementation of the library
> works on all platforms.


Yes. <g>

In practice the stream library implementation relies on a lower level
that is platform-specific. For example, that lower level might be and
typically is the FILE* abstraction from the C standard library.

Cheers, & hth.,

- Alf

--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?
 
Reply With Quote
 
 
 
 
James Kanze
Guest
Posts: n/a
 
      12-03-2007
On Dec 2, 6:15 pm, "Alf P. Steinbach" <(E-Mail Removed)> wrote:
> * (E-Mail Removed):


> > Hello I am starter in this amazing language and in
> > programming in general and I am wondering how the stream
> > library for example works fine on many platforms
> > (Windows,Linux etc.) does the compiler come with different
> > versions of this library on each platform


> Yes.


> > or the implementation of the library
> > works on all platforms.


> Yes. <g>


> In practice the stream library implementation relies on a
> lower level that is platform-specific. For example, that
> lower level might be and typically is the FILE* abstraction
> from the C standard library.


Which just moves the problem down a level. Sooner or later,
you've got to hit Posix or Windows (or whatever). (FWIW: none
of the iostream implementations I regularly use use FILE*.)

There are other elements in the library which depend not only on
the system, but on the compiler itself: things like
std::type_info or std::numeric_limits.

--
James Kanze (GABI Software) email:(E-Mail Removed)
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
 
Reply With Quote
 
Alf P. Steinbach
Guest
Posts: n/a
 
      12-03-2007
* James Kanze:
> On Dec 2, 6:15 pm, "Alf P. Steinbach" <(E-Mail Removed)> wrote:
>> * (E-Mail Removed):

>
>>> Hello I am starter in this amazing language and in
>>> programming in general and I am wondering how the stream
>>> library for example works fine on many platforms
>>> (Windows,Linux etc.) does the compiler come with different
>>> versions of this library on each platform

>
>> Yes.

>
>>> or the implementation of the library
>>> works on all platforms.

>
>> Yes. <g>

>
>> In practice the stream library implementation relies on a
>> lower level that is platform-specific. For example, that
>> lower level might be and typically is the FILE* abstraction
>> from the C standard library.

>
> Which just moves the problem down a level. Sooner or later,
> you've got to hit Posix or Windows (or whatever). (FWIW: none
> of the iostream implementations I regularly use use FILE*.)


Well, for example, the Dinkumware standard library implementation in
MSVC 7.1 does (I just fired it up and looked at the code). To
understand this, if you want to go looking at the code, note that it
uses the internal definition _iobuf. The C library's FILE is in this
implementation a typedef for _iobuf.

Perhaps you don't use the Dinkumware implementation?


> There are other elements in the library which depend not only on
> the system, but on the compiler itself: things like
> std::type_info or std::numeric_limits.


Keep in mind that there exists portable implementations of the STL, e.g.
<url: http://www.stlport.org/>.

Cheers, & hth.,

- Alf


--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?
 
Reply With Quote
 
James Kanze
Guest
Posts: n/a
 
      12-04-2007
On Dec 3, 5:04 pm, "Alf P. Steinbach" <(E-Mail Removed)> wrote:
> * James Kanze:
> > On Dec 2, 6:15 pm, "Alf P. Steinbach" <(E-Mail Removed)> wrote:
> >> * (E-Mail Removed):


> >>> Hello I am starter in this amazing language and in
> >>> programming in general and I am wondering how the stream
> >>> library for example works fine on many platforms
> >>> (Windows,Linux etc.) does the compiler come with different
> >>> versions of this library on each platform


> >> Yes.

>
> >>> or the implementation of the library
> >>> works on all platforms.


> >> Yes. <g>


> >> In practice the stream library implementation relies on a
> >> lower level that is platform-specific. For example, that
> >> lower level might be and typically is the FILE* abstraction
> >> from the C standard library.


> > Which just moves the problem down a level. Sooner or later,
> > you've got to hit Posix or Windows (or whatever). (FWIW: none
> > of the iostream implementations I regularly use use FILE*.)


> Well, for example, the Dinkumware standard library implementation in
> MSVC 7.1 does (I just fired it up and looked at the code). To
> understand this, if you want to go looking at the code, note that it
> uses the internal definition _iobuf. The C library's FILE is in this
> implementation a typedef for _iobuf.


> Perhaps you don't use the Dinkumware implementation?


Not normally. I'm more or less constrained to use the
implementations which come with Sun CC or with g++, depending on
which platform I'm on. I've played around with it under VC++,
but I don't normally develop on a Windows platform.

Using FILE* to implement iostream is certainly a valid option
(although not used by g++). But all that that means is that the
platform specific code is in the implementation of the FILE*
stuff, and not in the implementation of iostream. In the end,
it has to be there somewhere.

> > There are other elements in the library which depend not only on
> > the system, but on the compiler itself: things like
> > std::type_info or std::numeric_limits.


> Keep in mind that there exists portable implementations of the STL, e.g.
> <url:http://www.stlport.org/>.


Which intentionally don't implement parts of the library
(<typeinfo>, for example), and which contain system dependent
code in other parts (the iostream subsystem, for example).

The border between "library" and "language" isn't always that
sharp. Some things (e.g. the rules concerning name look-up) are
clearly part of the language, and others (e.g. the standard
algorithms) clearly library, but there are gray areas in the
middle, around things like typeid/std::type_info, some of the
special handling of exceptions and new, <limits>, etc. And some
parts of the library can't be written in terms of C++: things
like <iostream> or <ctime> ultimately require functionality that
is not provided by the language, but by the platform (OS, etc.).

--
James Kanze (GABI Software) email:(E-Mail Removed)
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
 
Reply With Quote
 
hmaher15@yahoo.com
Guest
Posts: n/a
 
      12-04-2007
Thank you both (Alf P. Steinbach and James Kanze) for your help.
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: How include a large array? Edward A. Falk C Programming 1 04-04-2013 08:07 PM
RE: hash() yields different results for different platforms Kerry, Richard Python 2 07-13-2006 01:16 PM
hash() yields different results for different platforms Qiangning Hong Python 12 07-12-2006 02:08 PM
audio synthesis libraries / platforms / drivers questions sandwich_eater@hotmail.com C++ 6 08-10-2005 08:29 AM
Parsing from String to double, different on different platforms Peter the Swede Java 10 11-15-2003 07:07 AM



Advertisments