• 0

[C++] Compile error.


Question

I downloaded Borlands C++ Compiler 5.5 and when I'm about to compile a file with cpp32.exe then I get error.

My code:

  Quote
#include <stdio.h>

#include <iostream.h>

int main(void)

{

cout <<< "Hol?";

return 0;

}

The error:
  Quote
Warning W8017 c:\Program\Borland\BCC55\Include\stdlib.h 117: Redefinition of 'abs' is not identical

Why aren't the definitions identical?

Link to comment
https://www.neowin.net/forum/topic/92199-c-compile-error/
Share on other sites

25 answers to this question

Recommended Posts

  • 0

the problem is that your operatior is "<<<" and not the correct "<<" change that and it will fix the problem

remember these are the operators u have in c++

! ~ + - * & / %

<< >> < <= > >= == !=

^ | && || += -= *= /=

%= &= ^= |= <<= >>= , ->*

-> () [] = ++ --

new delete

there is no "<<<"

also you need a namespace

do

using namespace std;

or

useing namespace std::cout;

Link to comment
https://www.neowin.net/forum/topic/92199-c-compile-error/#findComment-1049797
Share on other sites

  • 0

did you create a project within borland? a few compilers reqiure a project to be created to store the source code in and will give errors if the source file is not contained within a project. I dont know specifically about borland though.

Your code worked in Dev-CPP on my machine with "using namespace std;" and removing one of the three "<" you had in your cout statement.

Is there a clean rebuild or rebuild all or something like that available in borland? sometimes i have noticed that if the compiler gives me an error and i fix it. then it still gives me the error because it didnt actually compile the new source file. Those options always fix it though. A wierd quirk i guess.

Edited by Iluvatar
Link to comment
https://www.neowin.net/forum/topic/92199-c-compile-error/#findComment-1049836
Share on other sites

  • 0
  Iluvatar said:
#include <iostream> and 'using namespace std;' is really all that they would need for a simple statement like that

remember that he said with cpp32.exe, sounds like he's doing a command line compile. the paramaters need to be checked if this is the case, and that he has all the proper header files requried like iostream and such before the compile will work successfuly.

Link to comment
https://www.neowin.net/forum/topic/92199-c-compile-error/#findComment-1049859
Share on other sites

  • 0

cpp32.cfg:

-I"c:\Program\Borland\BCC55\Include"
-L"c:\Program\Borland\BCC55\lib;c:\Program\Borland\BCC55\lib\psdk"

ilink32.cfg:

-L"c:\Program\Borland\BCC55\lib;c:\Program\Borland\BCC55\lib\psdk"

Then I have Build.bat that I use when I compile:

  Quote
@c:\program\borland\bcc55\bin\cpp32 -e"test.exe" "test.c"

@pause

bcc32.exe worked just fine... but I'm trying to write some C++ now.

Link to comment
https://www.neowin.net/forum/topic/92199-c-compile-error/#findComment-1050059
Share on other sites

  • 0

bcc32 returns error too...

  Quote
Fatal F1003 c:\Program\Borland\BCC55\Include\stdcomp.h 5: Error directive: Must use C++ for STDCOMP.H

Doesn't like my file extension? Maybe it wants it to be .cpp instead of .c? :wacko:

I changed file extension and works just fine... but what does "using namespace std;" do? Where do I put it, "at the top" isn't enough for me.

Link to comment
https://www.neowin.net/forum/topic/92199-c-compile-error/#findComment-1050171
Share on other sites

  • 0

Hmm, didn't you see my code? It shows exactly where to put the using namespace std. Here it is again if you didn't see it the first time...

#include &lt;iostream&gt;
using namespace std; // &lt;-- HERE IS WHERE YOU PUT IT

int main(void)
{
   cout &lt;&lt; "Hol?";
   return 0;
}

And your extension must be .CPP for this to work, because this is C++ code. If the compiler sees .C, it'll think it's C code and you'll run into problems.

Namespaces basically avoids name conflicts. It's a C++ specific keyword. That statement tells the compiler that you're using code from the standard library (akastd>).

Link to comment
https://www.neowin.net/forum/topic/92199-c-compile-error/#findComment-1050209
Share on other sites

  • 0
  Oogle said:
Hmm, didn't you see my code? It shows exactly where to put the using namespace std. Here it is again if you didn't see it the first time...

#include &lt;iostream&gt;
using namespace std; // &lt;-- HERE IS WHERE YOU PUT IT

int main(void)
{
 ? cout &lt;&lt; "Hol?";
 ? return 0;
}

And your extension must be .CPP for this to work, because this is C++ code. If the compiler sees .C, it'll think it's C code and you'll run into problems.

Namespaces basically avoids name conflicts. It's a C++ specific keyword. That statement tells the compiler that you're using code from the standard library (astd/b>).

ah, OK.

I knew what STD ment but I had no idea what the statement did.

Thank:blush:sh:

Link to comment
https://www.neowin.net/forum/topic/92199-c-compile-error/#findComment-1050389
Share on other sites

  • 0

no,

#include "iostream.h" means its not standard while

#include <iostream.h> means it is.

" " - not

< > is

and i spent htis whole schoolyear coding console c++ apps, u dont need that namespace thing

#include &lt;iostream.h&gt;

void main()
{
   cout &lt;&lt; "Hola" &lt;&lt; endl;
}

will give hte same thing without ur special a character of course ;)

Link to comment
https://www.neowin.net/forum/topic/92199-c-compile-error/#findComment-1051097
Share on other sites

  • 0

I would like to have a fresh version of a compiler, but I ain't paying for it and I don't want some free but buggy compiler.

I don't work as a programmer and I don't sell anything that I've done so there's no reason to pay for a compiler.

All I want is a command line compiler, no fancy stuff.

I've written thousands of lines in ASM just using notepad and I'm used to that. :)

By the way, why does this code:

#include &lt;iostream.h&gt;

int main(void)
{
	std::cout &lt;&lt; "Hej hej!";
	return 0;
}

...take 112640 bytes when compiled?

I've written a program in ASM that's about 3800 lines long, graphics etc. etc. and it's a 46kB EXE?

Link to comment
https://www.neowin.net/forum/topic/92199-c-compile-error/#findComment-1051263
Share on other sites

  • 0
  Quote
and i spent htis whole schoolyear coding console c++ apps, u dont need that namespace thing
I noticed the same thing, I have never used a namespace, and everything has worked just fine.
  Quote
I don't work as a programmer and I don't sell anything that I've done so there's no reason to pay for a compiler.

Are you a student. .. . I got my from my school store for $99. That was Borland 5!

Link to comment
https://www.neowin.net/forum/topic/92199-c-compile-error/#findComment-1051983
Share on other sites

  • 0
  Chadwick 08 said:
the libraries, iostream probably calls on 3 or so more librarys which probably call on others, so in turn you can be writing a 5 line program that has 3000 lines of code from '.h' files unseen to you.

Does it include all content from all the header files? Because that doesn't make sence. :wacko:

Link to comment
https://www.neowin.net/forum/topic/92199-c-compile-error/#findComment-1052559
Share on other sites

  • 0
  Chadwick 08 said:
no,

#include "iostream.h" means its not standard while

#include <iostream.h> means it is.

" " - not

< > is

" " and < > have nothing to do with how "standard" a file is.

" " means "get the file located between the quotes". It also accepts paths relative to your project folder.

< > means "search the default include paths for this file". Paths are relative to the default include paths, which are determined by your project settings. Default means project defaults; not standard defaults.

iostream.h and iostream are 2 completely different files. Do a file search and see for yourself. Like weenur said, iostream.h is deprecated. iostream contains the implementation from the standard library.

  Quote
I noticed the same thing, I have never used a namespace, and everything has worked just fine.
All you're doing is running the risk of using a cout that's not part of the standard library. Whether or not that risk is acceptable to you fully depends on the requirements of your project. The using namespace std statement just ensures that you're using the cout from the standard library.
  Quote
I've written a program in ASM that's about 3800 lines long, graphics etc. etc. and it's a 46kB EXE?

In general, C++ gives you code maintainability and high-level abstraction at the cost of size and low-level optimization. If a smaller EXE is of the utmost importance, then you should probably stick to ASM.

  Quote
QUOTE (Chadwick 08 @ Jul 16 2003, 03:35)

the libraries, iostream probably calls on 3 or so more librarys which probably call on others, so in turn you can be writing a 5 line program that has 3000 lines of code from '.h' files unseen to you.

Does it include all content from all the header files? Because that doesn't make sence.

Header files usually take up very little space when compiled into code (unless you're inlining a lot of stuff). What takes up the bulk of the space are the libraries and object files that your program files link to. A good linker will usually leave out files that your cpp files don't call into. Also note that if you use debug libraries instead of release libraries, your executable will be much larger.

Link to comment
https://www.neowin.net/forum/topic/92199-c-compile-error/#findComment-1052979
Share on other sites

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Google Chrome is ending support for two ancient versions of Android by Usama Jawad Google Chrome is the most used browser right now, with the competition trailing far behind. What browser you use typically ends up being a matter of preference and familiarity, but all vendors are trying to one-up each other as they vy for more market share. Recently, Google claimed that Chrome is now faster than ever while Microsoft boasted that Edge is better at ad-blocking than Google's offering. Regardless of all these factors, Chrome commands a significant market share, even on legacy systems. Now, Google has announced that it is ending support for Chrome on two legacy versions of Android. In a brief blog post, Google has announced that it is dropping support for Chrome on Android 8 Oreo and Android 9 Pie with the upcoming version 139 of the browser expected to release on August 5. Right now, the current stable version of Chrome is 137, which means that Chrome 138 will be the last version of the browser to support these legacy operating systems. In practice, this means that Chrome will require Android 10.0 or above on mobile platforms in order to receive further updates. While the browser will continue working on older versions of Android, they will not receive updates, which means that they'll be left insecure and vulnerable to cybersecurity threats. As expected, Google has recommended that users on older systems should migrate to at least Android 10 in order to continue receiving updates on Chrome. While the company hasn't explicitly stated a reason behind its decision, it likely has to do with the dwindling user base of these old versions of Android and Google's ambitions to get more people to upgrade to newer versions of its mobile operating system. It's important to note that Android 8 was released in August 2017 and received its final security patch in October 2021. Meanwhile, Android 9 was rolled out to the public in August 2019 and netted its final update in January 2022. So in retrospect, Google has already been offering Chrome support for these legacy versions long after they hit end-of-support themselves.
    • I use two of these in RAID0 for video games and other things, together they are capable of 2.8 million IOPS and 15 GB/s on Gen4. At this price, 4 TB of Gen4 is faster and less expensive than a single 2 TB Gen5 NVMe, not to mention easier to cool off. Highly recommend.
    • that is a normal sign in, they just put in a dumb location to try to hide it... and yes I think the whole MS account by default is BS too, the first question should be do you want an online profile or a local one
    • From our past comments, it looks like some ppl are defo enjoying these stories.
    • You are missing the point, we should not have to do that. Should have a do you want an MS account option on the normal sign in.
  • Recent Achievements

    • One Month Later
      adnan.hebibovic earned a badge
      One Month Later
    • Week One Done
      adnan.hebibovic earned a badge
      Week One Done
    • Dedicated
      tesla maxwell earned a badge
      Dedicated
    • Dedicated
      Camlann earned a badge
      Dedicated
    • Week One Done
      fredss earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      630
    2. 2
      Michael Scrip
      224
    3. 3
      ATLien_0
      219
    4. 4
      +FloatingFatMan
      143
    5. 5
      Xenon
      134
  • Tell a friend

    Love Neowin? Tell a friend!