Visual C++ :: Static Variables Local Or Global?
Mar 10, 2014
I came across the following code today and I was a bit surprised that it worked:-
Code:
std::string func_A () {
static std::string x;
if (!x.empty())
return x;
[Code] ....
I've simplified things slightly - but the basic point is that both functions are in the same source file and they both have a static std::string called 'x'. Being static, I guess they aren't (strictly) local variables. So how does the compiler know that they're different entities? Does it encode their signatures using the function name or something like that? If I call each function separately I do seem to get the correct string...
View 5 Replies
ADVERTISEMENT
Aug 5, 2013
Here is the code,
Code:
class A {
};
A& CreateObject() {
static A a;
return a;
} static A aa;
int main() {
return 0;
}
So is there any difference between a defined in CreateObject and aa?
View 6 Replies
View Related
Jul 22, 2014
Is it possible to use & change global variables in a Static Library? For example:
I declare a
bool test = true;
globally.
Then later in an exported function If the user wants, he can set that test to false. So the program later when checks test if it's true, will notice that it's not true, since one of my function changed it.
Is it right?
View 3 Replies
View Related
Oct 4, 2012
is it possible to have a global variable pointing to a different address depending on the thread?
Imagine one would like to use threads with the loop:
for (i=0;i<n;i++){
globalPointerVariable=getAddress(i);
DoThingsUsingThe_globalPointerVariable();
}
View 4 Replies
View Related
Nov 14, 2013
When a declare a string e.g.
Code:
char str[30]; as a global variable, the srting is initialized to NULL.
But if I declare char str1[30] INSIDE main(), then the string has garbage inside.... Why this happens??
E.g. the following code snippet...
Code:
#include <stdio.h>
char str[50];
int main(){
char str1[50];
[Code] ....
View 4 Replies
View Related
Jan 24, 2014
I see many time where static data member is used to count creations of objects -
i.e.
1. the static data member is init to 0
2. the static data member is incremented by 1, in the Class' constructor, every time an object is created
However, if you define a global object of a class,
How can you tell that the static data member is initialized BEFORE the constructor of the global object is called? (i.e. before the global object is created).
Because to my understanding, you do not know in advance the order of global objects' creation -
so the Global Object could be created BEFORE the static data member was created and initialized.
View 14 Replies
View Related
Nov 20, 2014
//Declare Variables
String lstNme, frstNme, finalGrade;
Double pointsEarned, percentage;
//Get First Name, Last Name and Score
[Code]....
I am getting the error popping up on the line 58 under the console.writeline...+finalGrade "Error1Use of unassigned local variable 'FinalGrade' The thing i am not understanding is that it is declared
View 11 Replies
View Related
Oct 15, 2014
I have made an application and I have basically solved everything. But the only problem is that I am using global variables because it felt like the smoothest, so my program is built on it.
But now I've read around and I understand that you should not use these(?). Do you think pointers is the best think to use instead?I have previously declared my board array and some variables as global and I want them in alot of functions.I have read and understand the procedure for the use of pointers so I can use my int's in the other functions by doing like this? Code: #include <stdio.h>
int justprint();
int main()
{
int Row = 2;
int Column = 2;
int *pRow = &Row;
int *pColumn = &Column;
[code]...
But how do I do it with an array like this one? If I declare it in the main function, and then want to use it in other functions.Or are there better, easier solutions?
Code: char game[3][3]={{0,0}};
View 13 Replies
View Related
Jun 25, 2013
On linux, I can compile DLLs (shared objects) as well as executables that use them. I can even access globals and classes that are defined in the EXE from the DLL, and vice versa, simply with the 'export' keyword. flawlessly.
The Problem: But on Windows (using MinGW), no matter what I do, I'm completely unable to access global variables which defined in the EXE, from the DLL. On Linux, this is no sweat, but what's Windows' problem?
I also need to extend classes in the dll with base class method definitions defined in the exe.
Ive heard that on Windows, you need to use declspec(dllimport) and declspec(dllexport). I can compile with CygWin+MinGW/g++4.5.3 as well as "Pure Windows" with MinGW/g++4.7.2 *without* the declspecs. So what's the decljunk for? Is this really just something for MSVC or other compilers?
Here's some Windows code to show what the problem is. The DLL's global variable is accessible to the EXE just fine, but the EXE's global variable is not accessible to the DLL - compilation complains it is an undefined reference.
main.cpp
#include "myLib.h"
#include <stdio.h>
int exe;
[Code].....
edit: I tried using --enable-runtime-pseudo-reloc --allow-shlib-undefined options when compiling the DLL and G++ complains that --allow-shlib-undefined is an unrecognized option.
View 1 Replies
View Related
Feb 23, 2015
I am using VS2010 to develop an app which includes several windows forms that I am trying to set up global variables for, and I am getting a few errors like:
LNK2005: "wchar_t *dsn"...already defined in ....obj
I have a header file (externals.h) with:
#ifndef MY_GLOBALS_H
#define MY_GLOBALS_H
extern long dbg;
extern wchar_t dsn[50];
extern wchar_t u[30];
extern wchar_t p[30];
#endif
and 2 different forms, each with different namespaces, but both including the above header (#include "externals.h").One of the form .h files defines the values for these externally declared variables like this: namespace PWValidationTools{
wchar_t dsn[50] =_T("MDOTProjectWise");
wchar_t u[30]=_T("api_admin");
wchar_t p[30]=_T("proce55");
long dbg = 1;
public ref class ValidationSetupForm : public System::Windows::Forms::Form {
}
The other form file only uses these variables, never defines them.I am getting the above LNK2005 error only for the variables declared as wchar_t, not the "long" one. why I'm getting the link errors only for the wchar_t variables.
View 1 Replies
View Related
Apr 23, 2013
I have the following code. According to this the values of pointers p[0] and p[1] remains unchanged since the swap is made to local variables in swap function.Now my doubt is how can I swap the pointers p[0] and p[1] inside the function swap??
Code:
#include<stdio.h>int main(){char*p[2]={"hello","good morning"};
swap(p[0],p[1]);
printf("%s %s",p[0],p[1]);return0;
}void swap(char*a,char*b){char*t; t=a; a=b; b=t;
}
View 5 Replies
View Related
Jan 19, 2014
I am trying to get variables that are global to multiple files. I have mananged to make constant variables that are global but maybe not in the best way. In the header i have the constant variables being defined:
const int variable_Name = 5;
And the cpp file:
#include <iostream>
using namespace std;
#include "vars.h"
int main ( ) {
cout << variable_Name<< endl;
system ("pause");
return 0;
}
Is there a better way to do this and to make the variables able to be changed within the cpp files.
View 7 Replies
View Related
Oct 12, 2014
When I set a local variable to a value it causes a segmentation fault. This happens in the GameObject class in the setGame method.
While your at it tell me what you think of the design. Am I on the right track? if not state why.
Here is the source: [URL]
View 6 Replies
View Related
Nov 6, 2013
I have a main thread and a worker thread. How do i pass data between them when both are already running without using global variables?
View 1 Replies
View Related
Sep 22, 2013
I realize that implicit int rule was removed in C99 but gcc still takes this approach by default. I wonder why this happens:
bbb = 5; // legal
int main(void) {
aaa = 10; // illegal
auto aaa = 10 // legal
Inside function a specifier is needed. Error message with no specifier used is:
error: ‘aaa’ undeclared (first use in this function)
Is this because of linkage - bbb variable has an external linkage so compiler knows that we are defining a variable here while inside mean() we need to show compiler that aaa is defined right here, it does not come from external functions?
View 4 Replies
View Related
Oct 25, 2014
I need to transform a local variable into a global variable so I can use it in one of my functions. I thought about passing the value as a parameter to this function but I can do this since the function is called inside the while loop and this variable counts how many times the while loop does (so the final value is outside the loop). Example to visualize better:
Code:
while(condition) {
function(parameter1, parameter2);
count = count + 1;
}
printf("%d
", count);
So, I need to transform the final value of "count" into a global variable. Can I do this?
View 5 Replies
View Related
Mar 17, 2015
How can I convert these Global Declarations to only be Local?
#include <stdio.h>
#include <math.h>
int calculateArea(int num1, int num2);
double calculatePerimeter(double num3, double num4, double num5);
//Global Delcarations
float side1,side2,side3;
float area;
double perimeter;
[Code].....
View 8 Replies
View Related
Sep 18, 2013
I am trying to compile a c program for sudoku. I have declare const instances as global variables, but when i try to compile the code it says that my declarations are not constant, here is some of the code.
#include <stdio.h>
#include <assert.h>
const int GRIDSIZE = 3;
const int GRID_SQUARED = GRIDSIZE * GRIDSIZE; //this line
const int ALL_VALUES = (1<<GRID_SQUARED)-1; //and this give//the error
int board [GRID_SQUARED][GRID_SQUARED];
View 3 Replies
View Related
Mar 1, 2013
If I have a static variable in a class e.g. a pointer to another class like this: (B is another class)
class A {
public:
static B* cB;
};
Then I set that variable and create multiple instances of class A like this:
A::cB = new B;
As = new A[Number];
Then will the value of cB be the same across all instances?
I cannot pass the class pointer in the constructor as I need to create an array of instances. I tried this method but I get linker error.... unresolved external.
View 12 Replies
View Related
Jul 26, 2014
Is it more expensive to use too many static variables instead of ordinary variables? If yes, then how?------------This is a topic given to me to find out about and I don't even know what are static variable except that they live throughout the life of program
and only disadvantage of using static variable instead ordinary variables in my mind is just they will use memory even when we don't need them
View 7 Replies
View Related
May 21, 2013
For static variables when the memory will be allocated? During compilation or linking or loading time? In below program i am getting error :
(Error C2099: initializer is not a constant in microsoft visual studio) .
If i initialize x = 10 or any constant it works , why?
Code:
main() {
int i=10;
static int x = i;//error ?
if(x==i)
printf("Equal");
[Code] .....
View 8 Replies
View Related
Oct 15, 2013
I read in another forum that it is bad practice to declare static variables in a header file? Is that true and if so why.
View 1 Replies
View Related
Jan 30, 2013
The compiler "forces" me to use the std::max method, I cannot override it even when writing ::max in my code.
View 4 Replies
View Related
Jun 15, 2014
//I dont understand this why does "<< "
The value of global now is: " << global << "
";" is equals to nine
#include <iostream>
int subtract (int a, int b);
int global = 5;
int main(void) {
using std::cout;
int a, b;
[Code] ....
View 1 Replies
View Related
Apr 1, 2013
Can local variable be passed as the parameter for a new created thread procedure? Here is the example code:
Code:
void CDLG::some_function()
{
CString strFileName="abc.doc";
//local variable, can it be valid for being passed into the following new thread???
//Can strFileName still be accessed from within the stack of thread procedure?
::AfxBeginThread(ProcessContentThread,(LPVOID)&strFileName);
}
[Code]...
There is another method using variable on the heap,
Code:
void CDLG::some_function()
{
CString strFileName="abc.doc";
CString* pstrFN=new CString(strFileName);
::AfxBeginThread(ProcessContentThread,(LPVOID)pstrFN);
}
[Code]...
I test these code, both methods work as expected, but I doubt whether the first method is a good way. OR if only the second method is the correct way to pass a parameter to a thread.
View 12 Replies
View Related
May 10, 2012
I have some problems with this code i keep getting the error C2601: local function definitions are illegal.
#include<stdio.h>
#include<stdlib.h>
int col;
int row;
int i;
int count;
char Area[99][99];
[Code] .....
Errorerror C1075: end of file found before the left brace '{' at ...69
Error1error C2601: 'SetField' : local function definitions are illegal17
Error2error C2601: 'KillNieghbors' : local function definitions are illegal31
View 3 Replies
View Related