473,372 Members | 1,173 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,372 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 1781
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...
1
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
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...
0
by: ryjfgjl | last post by:
In our work, we often need to import Excel data into databases (such as MySQL, SQL Server, Oracle) for data analysis and processing. Usually, we use database tools like Navicat or the Excel import...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...

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.