473,320 Members | 1,814 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,320 software developers and data experts.

Why not compile?


int fun()
{
static int x = 1000;
return 0;
}

int main( int argc, char* argv[] )
{
cout<<x<<endl;
}

Aug 4 '06 #1
7 1780
In article <11*********************@i3g2000cwc.googlegroups.c om>,
we*****@gmail.com <we*****@gmail.comwrote:
>int fun()
{
static int x = 1000;
return 0;
}
>int main( int argc, char* argv[] )
{
cout<<x<<endl;
}
Please try the C++ newsgroup comp.lang.c++

--
All is vanity. -- Ecclesiastes
Aug 4 '06 #2

we*****@gmail.com wrote:
int fun()
{
static int x = 1000;
return 0;
}

int main( int argc, char* argv[] )
{
cout<<x<<endl;
Because this is not C language code.
Go read some good books before trying to write code.
}
Aug 4 '06 #3
"we*****@gmail.com" <we*****@gmail.comwrites:
int fun()
{
static int x = 1000;
return 0;
}

int main( int argc, char* argv[] )
{
cout<<x<<endl;
}
cout, endl, and the "<<" operator used for output are all specific to
C++, a language discussed in comp.lang.c++.

But let's assume you instead wrote this in C:

int fun()
{
static int x = 1000;
return 0;
}

int main( int argc, char* argv[] )
{
printf("%d\n", x);
}

Now you've still got a problem: there's no visible prototype for the
printf function, so this would invoke undefined behavior even if it
compiled. You need to add "#include <stdio.h>". <OT>You'd need some
C++ header for your original program; don't ask me which one.</OT>

You tell us this doesn't compile, but you don't tell us *how* it
doesn't compile. If you have a question like this, it's best to quote
the actual error message you received. (You should also include the
question in the body of the article; not all readers can easily see
the subject header along with the article.)

But I think what you're actually asking about is that the compiler
complains about the reference to x in main(). You declared x as a
static variable in fun(), so the name "x" is only visible inside
fun(). If you want x to be visible in both fun() and main(), you need
to declare it outside any function.

--
Keith Thompson (The_Other_Keith) ks***@mib.org <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <* <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.
Aug 4 '06 #4

Keith Thompson 写道:
"we*****@gmail.com" <we*****@gmail.comwrites:
int fun()
{
static int x = 1000;
return 0;
}

int main( int argc, char* argv[] )
{
cout<<x<<endl;
}

cout, endl, and the "<<" operator used for output are all specific to
C++, a language discussed in comp.lang.c++.

But let's assume you instead wrote this in C:

int fun()
{
static int x = 1000;
return 0;
}

int main( int argc, char* argv[] )
{
printf("%d\n", x);
}

Now you've still got a problem: there's no visible prototype for the
printf function, so this would invoke undefined behavior even if it
compiled. You need to add "#include <stdio.h>". <OT>You'd need some
C++ header for your original program; don't ask me which one.</OT>

You tell us this doesn't compile, but you don't tell us *how* it
doesn't compile. If you have a question like this, it's best to quote
the actual error message you received. (You should also include the
question in the body of the article; not all readers can easily see
the subject header along with the article.)

But I think what you're actually asking about is that the compiler
complains about the reference to x in main(). You declared x as a
static variable in fun(), so the name "x" is only visible inside
fun(). If you want x to be visible in both fun() and main(), you need
to declare it outside any function.

--
Keith Thompson (The_Other_Keith) ks***@mib.org <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <* <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.
Thanks for your answer!
I am a programer from Chinese,My English is poor!

Above program , I seen from <<Modern C++ Desingn>chapter 6.4.

" A function-static object is initialized when the control flow is
first passing its definition. Don't confuse static variables that are
initialized at runtime with primitive static variables initialized with
compile-time constants. "

I can't understand between "initialized at runtime"and "initialized
with compile-time",can you help me?
Thanks!

Aug 4 '06 #5
we*****@gmail.com a crit :
int fun()
{
static int x = 1000;
return 0;
}

int main( int argc, char* argv[] )
{
cout<<x<<endl; <<<<<<<<<<bug here!!!!
}
The compiler told you the problem. Fix it
instead of asking in newsgroups the obvious.

The "x" there is not defined anywhere.

Why?

Learn about "scope of identifiers" using your
C (or C++) book.
Aug 4 '06 #6
On 2006-08-04, Keith Thompson <ks***@mib.orgwrote:
int fun()
{
static int x = 1000;
return 0;
}

int main( int argc, char* argv[] )
{
printf("%d\n", x);
}
You forgot to add
return 0;
before the end of main().

--
Andrew Poelstra <http://www.wpsoftware.net/projects>
To reach me by email, use `apoelstra' at the above domain.
"Do BOTH ends of the cable need to be plugged in?" -Anon.
Aug 4 '06 #7
Andrew Poelstra wrote:
On 2006-08-04, Keith Thompson <ks***@mib.orgwrote:
int fun()
{
static int x = 1000;
return 0;
}

int main( int argc, char* argv[] )
{
printf("%d\n", x);
}

You forgot to add
return 0;
before the end of main().
In both C99 and C++, not returning anything on the initial call to
main() is equivalent to returning 0. In C89, it would be a good idea,
though.

Aug 4 '06 #8

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

8
by: janeaustine50 | last post by:
Python's InteractiveInterpreter uses the built-in compile function. According to the ref. manual, it doesn't seem to concern about the encoding of the source string. When I hand in an unicode...
5
by: Carmine Cairo | last post by:
Hi, I'm working on a project and today I've note a little problem during the compile fase. Here a little piece of code: // 1st version welldone = 0; size = p->getSize(); backbone = new...
5
by: Brice Prunier | last post by:
Here under 4 schemas i'm working with ( it may be long: sorry...) The context is the following : Resident.xsd imports Person.xsd and includes Common.xsd ( anonimous schema: no TargetNamespace )...
10
by: Chris LaJoie | last post by:
Our company has been developing a program in C# for some time now, and we haven't had any problems with it, but just last night something cropped up that has me, and everyone else, stumped. I...
6
by: Thomas Connolly | last post by:
I have 2 pages referencing the same codebehind file in my project. Originally the pages referenced separate code behind files. Once I changed the reference to the same file, everything worked...
15
by: steve yee | last post by:
i want to detect if the compile is 32 bits or 64 bits in the source code itself. so different code are compiled respectively. how to do this?
16
by: desktop | last post by:
I have read that using templates makes types know at compile time and using inheritance the types are first decided at runtime. The use of pointers and casts also indicates that the types will...
1
by: brianrpsgt1 | last post by:
Newbie here.... I have been able to successful pull info from a MySQL DB, get the results and output them in an HTML format using Cheetah to the screen using IDLE. I am doing this on a Windows...
3
by: NvrBst | last post by:
Right now I have C99 code in .c extensions. I compile it in VSC++ and it complains about a lot of errors. I change the extensions to .cpp and compile in VSC++ and it succeeds. Is there a way...
6
by: Ed Leafe | last post by:
I've noticed an odd behavior with compile() and code that does not contain a trailing newline: if the last line is a comment inside of any block, a syntax error is thrown, but if the last line is a...
0
by: DolphinDB | last post by:
Tired of spending countless mintues downsampling your data? Look no further! In this article, youll learn how to efficiently downsample 6.48 billion high-frequency records to 61 million...
1
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
0
by: jfyes | last post by:
As a hardware engineer, after seeing that CEIWEI recently released a new tool for Modbus RTU Over TCP/UDP filtering and monitoring, I actively went to its official website to take a look. It turned...
0
by: ArrayDB | last post by:
The error message I've encountered is; ERROR:root:Error generating model response: exception: access violation writing 0x0000000000005140, which seems to be indicative of an access violation...
0
by: Defcon1945 | last post by:
I'm trying to learn Python using Pycharm but import shutil doesn't work
1
by: Shllpp 09 | last post by:
If u are using a keypad phone, how do u turn on JavaScript, to access features like WhatsApp, Facebook, Instagram....
0
by: af34tf | last post by:
Hi Guys, I have a domain whose name is BytesLimited.com, and I want to sell it. Does anyone know about platforms that allow me to list my domain in auction for free. Thank you
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.