Programming :: Difference Between Struct And Union?
Nov 6, 2010
I have been spending time (starting yesterday) reverse-engineering GTK+ to get my programming skills up. I came across a struct in the headers (_GtkArg, which was then typedeffed into GtkArg) that includes a union in it that has pretty much the same properties as a struct. Then, there was a struct inside the union.
I'm confused. Just what is the difference between a union and a struct?
P.S. I am using GTK's native C programming language.
I have an old C application in which i am trying to include some STL cointainers. When i use the STL container alone it works fine, but when i include it into a C struct i have segmentation faults errors. I know that it is not a good idea to mix C and C++. Considering this code:
Code:
typedef struct{ int shmid; ... APPLSPACETYPE applSpace;
[code]...
and how to make a malloc for this issue; something like :
How do we allocate memory of struct? what i did was
Code:
int main() struct amp {
[code].....
cout <<"The size of 'struct' is"<< sizeof(struct amp)<<"and it is located at"<<struct amp*s = malloc(sizeof(struct amp))<<endl; it gives me an error--- In funtion 'int main()': error: expected primary-expression before 'struct' error: expected ';' before 'struct'
For a work project, I've got a bunch of python code from about a year ago that controls the movement of our EVI-D30 camera over a ttyUSB connection. It used to work fine on a 32-bit Fedora box, but recently we moved our whole project over to a 64-bit Gentoo server, and the same code seems to be worthless on the new platform. I didn't write the code, so I'm have trouble figuring out how to fix it. Error messages usually look like this:
Code:
File "./CameraController.py", line 172, in pan turn_callback(cmdStruct[0], cmdStruct[1]) File "./CameraController.py", line 147, in turn_callback cameras[camera].TiltUp()
I have what should be a relatively simple program (fadec.c) that maps a struct from an included header file (fadec.h) to a shared memory region, but Im struggling accessing members in the struct from the pointer returned by shmat. Ultimately, I want to access members in the shared memory structure with a globally declared version of the struct, shm__. Not only do I not know how to accomplish that, but I cant even seem to access members of the shared struct directly from the pointer itself (compiler complains about dereferencing pointer to incomplete type). Im at a loss and could use another set of eyes if you guys dont mind taking a gander:
Compile Errors: tony-pc:/cygdrive/p/test> cc -o fadec fadec.c fadec.c: In function 'main': fadec.c:30: error: dereferencing pointer to incomplete type fadec.c:31: error: dereferencing pointer to incomplete type
I want to read a pressed key or a combination of pressed keys from the keyboard and perform some action afterwords.
e.g.
Ctrl-Alt-F1
Out of ncurses lib. and the termios struct which can be used best for the above purpose and why ?I tried to search on Google, the differences between these two but couldn't get much !
I understand that block_device pointer *bd sholuld get initialized. Program should produce initialization error for *bd. Compiler is producing '->'. I am not understanding why?
This for Kernel 2.6.29.6. I'm trying to code a kernel module that displays process information.
how to count opened file descriptors per task. I have been able to write a module that lists all the current process names along with their pid number in /var/log/messages. Basically, I cycle through the ring of processes using the macro for_each_process(task) and printk the comm and pid of each task. I'm trying to see how many file descriptors each task has open. I've been reading up in books and all over the internet. At first I thought I needed to access max_fds under files_struct, but that just lists the maximum number of file descriptors that can be opened per task, which by default is set at 256. I then thought about counting the elements in the fd_array. But then I learned that every task's fd_array is initially set at 32. Now I know that I need to access open_fds of type fd_set * in files_struct. open_fds is a pointer to all the open file descriptors. The problem is that I don't know how to access a pointer of type fd_set.
Is there a good guide or book that really focuses on type fd_set and open_fds? Every book and resource I've read never really go into depth on this. relationship between files struct, open_fds, and the open file descriptors in task?
I have been given some code and could not explain why it's err's out. Checked the mysql 5.0 manual but nothing[URL]. It only explains using UNION in a SELECT statement which I understand. If I drop off UNION=() then CREATE TABLE works fine.
As recommended, I'm creating a new thread for my configuring GRUB problems commented first hereWe are setting up a new version of a custom system, we are migrating to Ubuntu Karmic from another distribution (Slackware). Besides small differences between these systems (most of them from the most recent versions of software used by the latest Ubuntu, such as GRUB 2), it has been decided that the new system will run an union root partition using aufs and tempfs, basically, we are following the steps provided heree install the system to a new hard drive from an already running Ubuntu Karmic system, usingdebootstrap/chroot, we move the disk to another sytem, so we have to correct disk references, we are able to run this system and it behaves correctly the first time it boots, it bypasses the GRUB menu since there are no other systems detected. However, after halting the system and booting it, the GRUB menu appears with a new "recovery" option, we've managed to remove this recovery option usingGRUB_DISABLE_LINUX_RECOVERY=trueBut then, the GRUB menu appears again, this time with only one option to boot: our system installation. But when this GRUB menu appears, it has no default timeout and so it stays forever unless ENTER is pressed to boot into the selected entry.
The main problem is that we are unable to configure GRUB inside the new installation because it always returns this message:grub-probe error cannot find a device for /If we boot the system "normally" (mounting root to a normal partition), we are able to configure GRUB properly, but it does not behave the same when using the union file system as /We are only looking for a way to bypass the GRUB menu and boot our system, do you have any advice on how to properly configure the GRUB menu for our system
I am interested in learning 3D programming. The thing is, I would hate to put too much effort to learn something that doesn't have future and is dying. My favorite language at the time is Java. My goal is professional programming.
So I have several questions: 1. Should I learn JOGL or start learning C++ and do C++ openGL programming? 2. Is there a big difference between JOGL and C++ openGL programming? 3. Is it worth to learn openGL? Does it have a future? 4. Is it a big difference between openGL and directX coding? 5. If choosing Java, then JOGL or LWJGL?
Ubuntu 10.04 lucid. sun-java6-jdk has been dropped from the Multiverse section of the Ubuntu archive. They recommend using openjdk-6 instead. Is there any difference between these 2 packages?
I know it's a very silly question but could someone please explain the difference between "/bin/bash" & "/bin/sh" I was under the impression that both are same but following output on my Ubuntu 8.10 is making me raise my eyebrows.
I am not clear with difference between hexdump and objdump and coredump. I wrote a small program
Code: main (){ int a=2; int b=4; int k=b/a; int m=9;
[Code].....
Some of the above instructions such as 89 d0 should be present in hexdump. What exactly is the hexdump ,objdump and coredump and what is their importance?
What is the difference between *ptr++ and (*ptr)++. In my opinion the terminology is all over the place so if you could give an example it would be better.
I was going through some exercise given in my school. I have read the C book but I am not able to understand some part. That is static variable. What exactly is a static variable and what does it do? I saw in Linux Kernel Programming external and exported are also some thing. I am not getting the difference between static,EXPORT_SYMBOL,external variable types. If I make a kernel module then how will I make sure that my variable is visible to the kernel. Is this what it is all talking about? I have checked this page [URL].
I am starting to learn Linux graphical programming. Most of codes in my hands were written based on xlib, which is a kind of old graphic lib. I see some developers more interested in openGL. Then what's the difference between xlib and openGL? And which one is more popular used in which industry area?
Now, I'm ready to run my program, and my code is based on 32bit version. So I run the program on Ubuntu 9.10 32bit. And I got running time for 48s. But that's a bit slower than I expected; the program has bunch of File I/O processing but the result(48s) just doesn't make sense compared to given initial data set. So I just run the same program and same initial data set on Ubuntu 9.10 64bit ver. Then, bang!! it took 1.4s to finish the job.
Do you have any thoughts what kind of fact might make this significant difference? The differences b/w those two OS are "32 vs 64" and 32bit version has Java SDK, Eclipse, Apache2, Mysql, PHP, CGI, and python. We-server service is running but because I'm not really running web server. Did the result come from these background programs?
-- I tested it on the both OS in the same situation as possible as I can. (reboot->test)
-- BTW 64bit one doesn't have those programs. I just installed on my external hard drive, so it's literary PURE one. (32bit one also in the same HDD)