C :: Accessing Pointers From Other Source Files
Oct 16, 2013
I've recently been learning GTK (though this question is not specific to GTK), and came across a situation that I was unsure how to best handle. Essentially, I've defined several pointers in one source file, and I want to access those pointers from other source files.
The structure of my GTK programs generally follow this pattern:
- "main.c": Define the main window and run GTK main
- "create_window.c": Create and arrange widget pointers in the main window
- "program_functions.c": All other source code for the project (several source files in reality)
In "create_window.c", I declare and define all my widget pointers (e.g. label). If I need to modify those widgets in "program_functions.c" for any reason (say, to change the value of a label), I need access to the pointers created in "create_window.c".
My first thought was to create a global struct of pointers in "create_window.c", and extern that struct to the other source files that need access to the pointers. The thing I don't like about this approach is spreading globals across my program.
My second idea was to create access functions in "create_window.c" where the necessary pointers are statically stored. The first time I call this function (immediately after creating a widget), a static copy of that pointer is stored in the function. Each time afterwards when I call that function (from other source files), I simply use that static pointer to access the widget of interest.
Example:
Code: void edit_label_1(GtkWidget *label_set, const char *string)
{
static GtkWidget *label = NULL;
[Code].....
Are either one of the approaches considered acceptable by standard practice?
View 2 Replies
ADVERTISEMENT
Sep 16, 2013
When including a header file in stdafx.h, should that file still be included in the source file where it is actually used?
If it is included in both places, is the one in the source file ignored?
View 5 Replies
View Related
Aug 30, 2013
I came across the below code snippet in a project and was not sure how value of variable "response" is computed. Here as we can see, pic_data holds two one dimensional arrays but "response" access both the single dimensional array as two dimensional array.
Code:
#define MAX 100
#define MAXBUF 100
u32 response;
u32 index;
}
[code]....
View 3 Replies
View Related
May 16, 2012
I am trying to run multiple source files but right after the first one finishes running the program closes and doesn't move on ...
View 2 Replies
View Related
Mar 7, 2013
How I can compile multiple source file in visual studio 2012 ???
View 1 Replies
View Related
Apr 30, 2013
I have a vector (structures) in a struct (instances). I make a declaration of this struct called instance. The vector is a 3-layer vector of pointers, like so:
vector < vector < vector<scene::IAnimatedMeshSceneNode*> > > structures; (The type is from Irrlicht 3D). I have 3 nested "for" loops which looks similar to the following:
for (int a = 0; a < instance.structures.size(); a++) { /*note:vector size previously set*/
for (int b = 0; b < instance.structures[a].size(); b++){
for (int c = 0; c < instance.structures[a][b].size(); c++) {
if (1) { //checking value of variable not included in snippet
(instance.structures)[a][b][c] = smgr->addAnimatedMeshSceneNode(fl);
(instance.structures)[a][b][c]->setPosition(renderPos);
}
}
}
}
The problem is in these two lines, I think:
(instance.structures)[a][b][c] = smgr->addAnimatedMeshSceneNode(fl);
(instance.structures)[a][b][c]->setPosition(renderPos);
These are currently referencing the pointers, it seems. The program compiles but crashes at this point. I need them to reference the values of the pointers. Problem is, I don't know where to put the dereference operator (*). Where should it go?
View 4 Replies
View Related
Nov 24, 2013
In general, my problem is that I've been trying to reorganize the project I and my group are working on into separate project files. Everything was working perfectly fine before, but now I'm facing the wrath of undefined reference errors when I try to call my DLL functions.
I have them declared and included in the central header file here :
Code:
/* DLL functions */
typedef void ( * t_wait )( int milliseconds, const int frames_per_seconds );
typedef clock_t ( * ft_timer )( int command, t_timer * timer_object ); /* clock_t is usually defined as long */
typedef void ( * t_SDL_errorexit )( const char * message );
typedef SDL_Surface * ( * t_load_image )( char * image_path, unsigned is_transparent );
[Code]...
Then I have them imported here :
Code:
/* ******************************************************** */
/* ********* win_error( char *, bool ) ********* */
/* ******************************************************** */
/* - Displays a GUI for a windows specific error message, */
/* pass true to it to have it exit the program, pass false */
/* to have it continue */
/* ******************************************************** */
extern void win_error( char * message, bool is_exit )
{
/* Note : win_error uses the Win32 Api */
/* ********************************** */
char buffer[BUFSIZ] = { 0 }; /*
[code]...
This doesn't work, as my compiler sees it that I am trying to call invalid functions, whereas I have made sure to import the functions before calling. Obviously my compiler can't tell that, and is trying to protect me from calling them.
The source files are compiled as C++, but I'm using C-style code instead of true C++ code.
Obviously I'm using Windows style DLL linking, but if the only ways to share imported functions are non-standard, only post ways that will work on as low as Windows XP.
I have tried to statically link them before, but that led to a problem that I posted a while back. Which led me to dynamically linking, which was problem-free until I separated my code into separate files.
View 13 Replies
View Related
Oct 30, 2014
My program needs to compile various source files at runtime.What is the most elegant way to compile cross platform with g++ from within my program? Is there a gcc-library I can use? I know that I could use popen() to open a Unix pipe and call g++ as command line tool. But first it isn't really cross platform and second it doesn't seem elegant to me.
View 10 Replies
View Related
Jun 9, 2013
I know it sounds strange but I've seen things that have files which contain source code (usually in something in Python or such) and how this is read on run-time?
View 1 Replies
View Related
Jul 10, 2013
For example, I have the below files in a project called Calculate :
Source files : Calculate.cpp , Average.cpp (with out main)
Header files : Calculate.h , Average.h
I knew in general, we have to include Average.h to project header file Calculate.h to make it as part of project.
technical difference between adding header file (Average.h) to either project header file (Calculate.h) or project source file (Calculate.cpp) ?
I found no difference in an output. But, there must be technical difference.
View 3 Replies
View Related
Sep 26, 2014
I don't have in depth code or anything. I tried this but can't seem to wrap my head around it.
Code: //header.h
namespace test {
int arr[5];
[Code] ....
Also tried putting int arr[5] in a Test class within test.h.
I have 2 structs in another file, the main, and want to make an instance of the arr variable, in a separate header, for each.
View 2 Replies
View Related
Feb 11, 2012
I have heard that people should implement their class member functions in files that are different from their class declaration files. But in cases there are multiple classes that are inter-related to each other, how will you review the source code ?
View 1 Replies
View Related
Apr 9, 2013
I have a big un-editable program, A, which I need to run for like a 1000 different input files. It takes about 15 minutes for each file, so a little parallelisation wouldn't hurt.
I have installed openmpi and it works fine. I have made a small program, B, which selects an input file, moves it to another directory, calls program A with the path to the selected input file and then - when A is done - selects a new input file etc. It should loop until there are no more files in the initial directory.
The problem is this: When I have several processors they might pick the same file and that leads to errors. I have a working program, but it is not pretty.
Code:
#include <stdio.h>
#include <mpi.h>
#include <dirent.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int num_procs, procs_id, i, exit;
struct dirent *ent;
[Code]...
Every time a processor tries to move a file that another processor has just moved, the output shows an error message before looping to the next file and trying again. It works, but it is a bit annoying. So my questions are:
1) Can I switch off the error message somehow?
2) Is there a better way to do this?
View 3 Replies
View Related
Oct 27, 2014
I'm supposed to read in a data file with fixed length records and fields, create a sorted index list in memory, and save that list to a file. Then I'm to write a second program that interactively (via the Linux command line) takes a key and the index file name, opens and loads the index file, searches for the given key using the index table, and opens and returns the correct data record.
The original file consists of a list of records with a key (int), a name (string of 8 characters max), a code (int) and a cost (double).
The RRN (relative record number) begins at 1, with the RRN at 0 representing a dummy record with only the size in the first entry.
Here is the data file I will be using.
8 blank 0 0.0
12345 Item06 45 14.2
12434 Item04 21 17.3
12382 Item09 62 41.37
[Code]....
The "File is Open" part will be replaced once I figure out what do do once the file is open, just used this message to verify that it was opening the file.
View 12 Replies
View Related
Feb 9, 2015
I'm trying to make sure my code is written in smaller modules, so my first step is to create my initialization process in and external file to load the necessary data from external sources and set up things like the content of drop down list boxes.
My first attempt failed to give me access to the combobox items add function so I moved that code back into the form1.h file:
Code:
public:
Form1(void) {
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
void AddDate(char *date, int ID)
{
this->comboBox1->Items->Add("line 1");
}
It compiles fine, but the call to it in my Initialize.cpp file
Code:
MarketView::Form1::AddDate("abs",1);
Gives error C2352: 'MarketView::Form1::AddDate' : illegal call of non-static member function
OK, so I change "void AddDate" to "static void AddDate" and now get the error that "static member functions do not have 'this' pointers" so I go back to the "MarketView::Form1::comboBox1" situation where there is no legal syntax after "Box1 to get me to Items->Add
I've been an old fashion programmer for over 47 years. It seems as is the concept of programming computers has changed from the concepts of logic to memorization of complex syntax.
There has to be a simple answer to do this other than to write thousands of lines of code in one Form1.h file. I refuse to believe that the new programming concepts will not allow you to write code in smaller more manageable modules.
What is the proper syntax for breaking up the larger file into more manageable chucks?
View 12 Replies
View Related
May 6, 2013
I'm new with working with random binary files. I have a class with a char* pointer stored inside of it, I also have a constructor that takes in a string (of any size) from the user. I then simply store this string into the char *. Once the string is stored in the char *. I reinterpret the instance, and I store the information into the random binary file. Everything works.
Question: Random files must know the size of the object that is being stored inside of it, so why when I enter strings of different sizes into the file, it appears to still be working. for example this is an example of the code:
class info {
private:
char *phrase;
public:
info(string n ="unknown"){
phrase = new char[n.size()+1];
[Code] ....
My point is, lets just say for example the object ETC, was some long string, this would still work for me. My question is, I don't believe each object is the same size because I allocate memory for the char pointer in the constructor.
Should I not do this just to be safe, and just use a char array instead of a pointer? (Even tho I would have set a pre-defined size for the string) or is something happening in the back to prevent this from not working?
View 5 Replies
View Related
Feb 28, 2014
I'm trying to create an array of pointers to pointers which will point to array of pointers (to strings) I tried
Code:
int i;
char *string[]={
"my name is dave",
"we like to dance together",
"sunny day",
"hello",
[code]...
the app keeps crashing , I don't know how to make the array-elements to point to another array-elements..
View 4 Replies
View Related
May 21, 2013
I am a little confused while comparing char pointers to integer pointers. Here is the problem:
Consider the following statement;
char *ptr = "Hello";
char cArr[] = "Hello";
When I do cout << ptr; it prints Hello, same is the case with the statement
cout << cArr;
As ptr and cArr are pointers, they should print addresses rather than contents, but if I have an interger array i.e.
int iArr[] = {1, 2, 3};
If I cout << iArr; it displays the expected result(i.e. prints address) but pointers to character array while outputting doesn't show the address but shows the contents, Why??
View 2 Replies
View Related
Apr 5, 2013
I am writing a program to hide files behind other files using Alternate Data Streams in Windows NTFS file systems.
The program is as follows:
Code:
#include <stdio.h>
#include <stdlib.h>
int main(void){
char hostfile[75], hiddenfile[75], hiddenFileName[15] ;
printf("Enter the name(with extension) and path of the file whose behind you want to hide another file: ");
scanf("%75s", hostfile);
[Code]...
The complier is showing error as "Extra Perimeter in call to system" but I am not getting where?
View 4 Replies
View Related
Jan 16, 2014
I am writing a piece of code that requires me to display the last 1000 lines from a multiple text files (log files). FYI, I am running on Linux and using g++.
I have a log file from which - if it contains more than 1000 lines, I need to display the last 1000 lines. However, the log file could get rotated. So, in case where the current log file contains less than 1000 lines, I have to go to older log file and display the remaining. For e.g., if log got rotated and new log file contains 20 lines, I have to display the 980 lines from old log file + 20 from current log files.
What is the best way to do this? Even an outline algorithm will work.
View 6 Replies
View Related
May 4, 2014
I am making a game and want to make an updater that grabs the source code from a page on the web. Can this use things that are available to all platforms? It could just be something that grabs the text from the page and executing it (maybe using something like Python's exec() command ?) BTW I'm using mac
View 1 Replies
View Related
Oct 14, 2014
I want to start developing Android apps in C++, but I do not know what I could use to compile the source code into an apk. I know that C++ is probably not the best choice for Android development, but I already know it and I do not want to learn Java.
View 4 Replies
View Related
Mar 6, 2013
I am lost trying to find a C2143 missing ; before using Error in all of my cpp files.
///// main.cpp///////
#include <iostream>
#include <time.h>
#include "fight.h"
#include "player.h"
#include "zombie.h"
using namespace std;
int direction;
player R; //instance of player class
combat B; //instance of combat class
[code]....
View 5 Replies
View Related
Jul 12, 2013
I just want to ask if some of you know good source for learning about Binary Trees.
View 2 Replies
View Related
Apr 24, 2014
I'm trying to decompile an old software that I need to start using again.
when I tried to open the file in ILSpy I got this message "This file does not contain a managed assembly"
I tried all other decompilers but still no luck.
View 3 Replies
View Related
Sep 11, 2014
I am building a project using Ogre3D, and I've downloaded the source code of the SDK.
For whatever reason, the program has got a bug. And I want to know what is going on within the SDK, how do I include the SDK source in Visual Studio 2010?
View 4 Replies
View Related