typedef struct ntt {
int type;
union {
int i;
char* s;
};
}nt;
nt n;
n.i = 0;
I found a C example like this and could not get gcc 2.95.4 to compile it
(struct has no member named `i') until I declared an instance of the union:
union {
int i;
char* s;
}u;
and accessed like:
n.u.i = 0;
Is the first example valid? If so, where is the problem?
--
Sean Dolan 73 4054
Sean Dolan wrote: typedef struct ntt { int type; union { int i; char* s; }; }nt;
This is called an anonymous union and it is a Microsoft extension. While
gcc supports MS extensions with the flag -fms-extensions, you'd do
better converting it to standard C. You can do this as you suggested. If
you want to avoid fixing up all references, you can simply dispose of
the union, costing an extra word or so per object of this type - which
may or may not be a big deal in your app. If the names inside the union
are globally unique, you can use macros to expand them out to their
fully-qualified versions.
--
Derrick Coetzee
I grant this newsgroup posting into the public domain. I disclaim all
express or implied warranty and all liability. I am not a professional.
On 2004-09-14, Derrick Coetzee <dc****@moonfla re.com> wrote: This is called an anonymous union and it is a Microsoft extension. While gcc supports MS extensions with the flag -fms-extensions, you'd do better converting it to standard C. You can do this as you suggested. If you want to avoid fixing up all references, you can simply dispose of the union, costing an extra word or so per object of this type - which may or may not be a big deal in your app. If the names inside the union are globally unique, you can use macros to expand them out to their fully-qualified versions.
Thank you Derrick, that cleared it right up.
--
Sean Dolan
Sean Dolan <se*****@bellso uth.net> writes: typedef struct ntt { int type; union { int i; char* s; }; }nt;
nt n; n.i = 0;
I found a C example like this and could not get gcc 2.95.4 to compile it (struct has no member named `i') until I declared an instance of the union: union { int i; char* s; }u;
and accessed like: n.u.i = 0;
Is the first example valid? If so, where is the problem?
No, the first example is not valid. In the member declaration
int type;
"int" is the member type and "type" is the name of the member.
In the (attempted) member declaration
union { int i; char *s; };
"union { int i; char *s; }" is the member type, but there is no member
name. (Sub-unions and sub-structs don't flatten into the namespace of
the surrounding struct or union.)
--
Keith Thompson (The_Other_Keit h) 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.
one of simple/silly questions:
why use unions when we have classes? what makes union worth of using?
c453___ <mu**@nospam.o2 .pl> writes: one of simple/silly questions: why use unions when we have classes? what makes union worth of using?
C doesn't have classes.
--
Ben Pfaff
email: bl*@cs.stanford .edu
web: http://benpfaff.org
> C doesn't have classes.
;) why use unions if we have structures?
c453___ <mu**@nospam.o2 .pl> writes: one of simple/silly questions: why use unions when we have classes? what makes union worth of using?
Because we don't have classes. (This is comp.lang.c, not comp.lang.c++.)
And, of course, unions and classes are two different things. The
point of a union is that the members are all stored in the same
location (and reading a member other than the last one written invokes
undefined behavior in most cases).
--
Keith Thompson (The_Other_Keit h) 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.
In article <opsebyi1kjekdo 2r@pieszczoch>, c453___ <mu**@nospam.o2 .pl>
wrote: one of simple/silly questions: why use unions when we have classes? what makes union worth of using?
Unions are very useful to organise employees to negotiate higher
salaries, better working conditions etc. Classes are more useful to
learn stuff, like C classes where someone teaches C and people like you
should listen carefully to learn.
There should be Usenet classes as well, where people could learn not to
post C++ questions to comp.lang.c.
"c453___" <mu**@nospam.o2 .pl> wrote in message
news:opsebz20jc ekdo2r@pieszczo ch... C doesn't have classes. ;) why use unions if we have structures?
All members of a union start at offset zero.
Each successive member of a struct starts at the next
available offset that is appropriate for the alignment
of that member and the preceding (if any) member. This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: Paradigm |
last post by:
I am using Access 2K as a front end to a MYSQL database.
I am trying to run a Union query on the MYSQL database. The query is (much
simplified)
SELECT as ID from faxdata UNION
SELECT as ID from letdata UNION
SELECT as ID FROM MEMODATA;
I get an ODBC error. The same query runs when the backend files are MDB
files and it runs with MYSQL if I only combine 2 tables.
|
by: shaun palmer |
last post by:
when or Where do you use a union query ?
how can I wright sql,
tblPopulation,* tblcustomer,* one to one with
all the appropriate attributes(field).
Your help would be greatly
appreciated. Thank you.
|
by: ranjeet.gupta |
last post by:
Dear ALL
As we know that when we declare the union then we have the size of the
union which is the size of the highest data type as in the below case
the
size should be 4 (For my case and compiler), and it is,
what I conclude from the below code
union data_type {
|
by: Ken Allen |
last post by:
I have some code from C/C++ that I am attempting to port to C#. I have come
across an interesting problem that is quite common in complex C/C++ code:
the us of UNION in structure definitions to permit the same piece of memory
to be referenced as different data types. This is often used to save space
and permit a single piece of memory to contain different types of data,
typically based on some other flag in the structure. In other cases...
|
by: marco |
last post by:
Dear List,
as it seems, MS SQL as used in Access does not allow a select INTO
within a UNION query. Also, it seems that a UNION query can not be used
as a subquery.
Maybe my (simplified) problem can avoid these technicalities: the
original table has columns
A1, A2, B1, B2, C1, C2.
| |
by: tedu |
last post by:
does anyone know of a platform/compiler which will place union elements
to not overlap?
as in
union u {
int a;
long b;
size_t c;
};
in my limited experience, writing to any of (a, b, or c) will affect
the value read from any other. i understand this is UB, but i'm
|
by: BillCo |
last post by:
I've encountered a problem while using ADO to save query objects.
Union queries created normally (via the interface) appear in adox
catelog.procedures rather than catelog.views. This is reasonably well
documented and I can live with it.
The below seems to be the only way to add queries to a database using
ADO:
Set cmd = New ADODB.Command
cmd.CommandType = adCmdText
|
by: Yevgen Muntyan |
last post by:
Hey,
Why is it legal to do
union U {unsigned char u; int a;};
union U u;
u.a = 1;
u.u;
I tried to find it in the standard, but I only found that
|
by: =?gb2312?B?zfWzrLey?= |
last post by:
Union un
{ int I;
char c;
}
main()
{
union un x;
x.c=10;
x.c=1;
|
by: wugon.net |
last post by:
question: db2 LUW V8 UNION ALL with table function month() have bad
query performance
Env:
db2 LUW V8 + FP14
Problem :
We have history data from 2005/01/01 ~ 2007/05/xx in single big
table,
we try separate this big table into twelve tables and create a view
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look !
Part I. Meaning of...
| |
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed.
This is as boiled down as I can make it.
Here is my compilation command:
g++-12 -std=c++20 -Wnarrowing bit_field.cpp
Here is the code in...
|
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth.
The Art of Business Website Design
Your website is...
|
by: Hystou |
last post by:
Overview:
Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 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 a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules.
He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms.
Adolph will...
|
by: adsilva |
last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
| |
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
|
by: bsmnconsultancy |
last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...
| |