unnamed namespace results in value being improper
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
I am on windows 7 machine with visual studio 2015 community edition .
Consider the following code:
#include "stdafx.h"
#include "iostream"
using namespace std;
namespace
{
int y=4;
int x=6;
}
int u = ::y;
int y = ::y;
int x = 567;
int main()
{
cout << u << "n";
cout << ::x << "n";
//cout << y << "n";
cout<< ::y << "n";
int y2;
cin >> y2;
return 0;
}
The result of the program is :
4
567
0
If we see u and x are right but y is wrong . why ?
c++
add a comment |
I am on windows 7 machine with visual studio 2015 community edition .
Consider the following code:
#include "stdafx.h"
#include "iostream"
using namespace std;
namespace
{
int y=4;
int x=6;
}
int u = ::y;
int y = ::y;
int x = 567;
int main()
{
cout << u << "n";
cout << ::x << "n";
//cout << y << "n";
cout<< ::y << "n";
int y2;
cin >> y2;
return 0;
}
The result of the program is :
4
567
0
If we see u and x are right but y is wrong . why ?
c++
add a comment |
I am on windows 7 machine with visual studio 2015 community edition .
Consider the following code:
#include "stdafx.h"
#include "iostream"
using namespace std;
namespace
{
int y=4;
int x=6;
}
int u = ::y;
int y = ::y;
int x = 567;
int main()
{
cout << u << "n";
cout << ::x << "n";
//cout << y << "n";
cout<< ::y << "n";
int y2;
cin >> y2;
return 0;
}
The result of the program is :
4
567
0
If we see u and x are right but y is wrong . why ?
c++
I am on windows 7 machine with visual studio 2015 community edition .
Consider the following code:
#include "stdafx.h"
#include "iostream"
using namespace std;
namespace
{
int y=4;
int x=6;
}
int u = ::y;
int y = ::y;
int x = 567;
int main()
{
cout << u << "n";
cout << ::x << "n";
//cout << y << "n";
cout<< ::y << "n";
int y2;
cin >> y2;
return 0;
}
The result of the program is :
4
567
0
If we see u and x are right but y is wrong . why ?
c++
c++
edited Nov 25 '18 at 5:40
rsjaffe
3,98671632
3,98671632
asked Nov 25 '18 at 2:57
MAGMAG
1,00321630
1,00321630
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
int y = ::y
Here the second y is the same as the first - the variable is initialized with its own value. Since it's a global variable, its own value is zero.
Once a declaration introduces a name y into the global namespace, there's no syntax to access y from the unnamed namespace. A variable declaration is visitble from its own initializer.
But the u is properly referencing properly to 4 . Shouldn't compiler either complain or give right value 4.
– MAG
Nov 25 '18 at 3:04
2
At the point whereuis declared, only the declaration ofyfrom unnamed namespace is visible, so that's the one being used.
– Igor Tandetnik
Nov 25 '18 at 3:14
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53464279%2funnamed-namespace-results-in-value-being-improper%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
int y = ::y
Here the second y is the same as the first - the variable is initialized with its own value. Since it's a global variable, its own value is zero.
Once a declaration introduces a name y into the global namespace, there's no syntax to access y from the unnamed namespace. A variable declaration is visitble from its own initializer.
But the u is properly referencing properly to 4 . Shouldn't compiler either complain or give right value 4.
– MAG
Nov 25 '18 at 3:04
2
At the point whereuis declared, only the declaration ofyfrom unnamed namespace is visible, so that's the one being used.
– Igor Tandetnik
Nov 25 '18 at 3:14
add a comment |
int y = ::y
Here the second y is the same as the first - the variable is initialized with its own value. Since it's a global variable, its own value is zero.
Once a declaration introduces a name y into the global namespace, there's no syntax to access y from the unnamed namespace. A variable declaration is visitble from its own initializer.
But the u is properly referencing properly to 4 . Shouldn't compiler either complain or give right value 4.
– MAG
Nov 25 '18 at 3:04
2
At the point whereuis declared, only the declaration ofyfrom unnamed namespace is visible, so that's the one being used.
– Igor Tandetnik
Nov 25 '18 at 3:14
add a comment |
int y = ::y
Here the second y is the same as the first - the variable is initialized with its own value. Since it's a global variable, its own value is zero.
Once a declaration introduces a name y into the global namespace, there's no syntax to access y from the unnamed namespace. A variable declaration is visitble from its own initializer.
int y = ::y
Here the second y is the same as the first - the variable is initialized with its own value. Since it's a global variable, its own value is zero.
Once a declaration introduces a name y into the global namespace, there's no syntax to access y from the unnamed namespace. A variable declaration is visitble from its own initializer.
answered Nov 25 '18 at 2:59
Igor TandetnikIgor Tandetnik
33.5k33659
33.5k33659
But the u is properly referencing properly to 4 . Shouldn't compiler either complain or give right value 4.
– MAG
Nov 25 '18 at 3:04
2
At the point whereuis declared, only the declaration ofyfrom unnamed namespace is visible, so that's the one being used.
– Igor Tandetnik
Nov 25 '18 at 3:14
add a comment |
But the u is properly referencing properly to 4 . Shouldn't compiler either complain or give right value 4.
– MAG
Nov 25 '18 at 3:04
2
At the point whereuis declared, only the declaration ofyfrom unnamed namespace is visible, so that's the one being used.
– Igor Tandetnik
Nov 25 '18 at 3:14
But the u is properly referencing properly to 4 . Shouldn't compiler either complain or give right value 4.
– MAG
Nov 25 '18 at 3:04
But the u is properly referencing properly to 4 . Shouldn't compiler either complain or give right value 4.
– MAG
Nov 25 '18 at 3:04
2
2
At the point where
u is declared, only the declaration of y from unnamed namespace is visible, so that's the one being used.– Igor Tandetnik
Nov 25 '18 at 3:14
At the point where
u is declared, only the declaration of y from unnamed namespace is visible, so that's the one being used.– Igor Tandetnik
Nov 25 '18 at 3:14
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53464279%2funnamed-namespace-results-in-value-being-improper%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown