I have some codes generated by perl, in which initialize some huge
struct,such as
PARA TOS_network_spantree_set_0_para_0 = { "vlan", emNUM, NULL, "",
"configuration on a designated vlan", PRO_REQUIRED };
const char* TOS_network_spantree_set_0_para_1_emvalue[] = { "disable",
"enable", NULL };
PARA TOS_network_spantree_set_0_para_1 = { "", emENUM,
TOS_network_spantree_set_0_para_1_emvalue, "", "enable or disable STP",
PRO_REQUIRED };
PPARA TOS_network_spantree_set_0_para[] = {
&TOS_network_spantree_set_0_para_0,
&TOS_network_spantree_set_0_para_1,
NULL
}
......
gcc(C89 setting) report warnings about that, but C99 not. I ignore those
warnings and try to dump the struct, the program crashed after some output.
what wrong and how I can fix it?
thanks a lot 4 4076
On Wed, 1 Jun 2005 14:17:01 +0800, "bingfeng"
<zh***********@topsec.com.cn> wrote in comp.lang.c: I have some codes generated by perl, in which initialize some huge struct,such as
PERL is off-topic here, and your code snippet is littered with types
not defined by C, so it is hard to tell.
PARA TOS_network_spantree_set_0_para_0 = { "vlan", emNUM, NULL, "",
What is the definition of the type 'PARA'? It appears to be 'pointer
to pointer to char' or 'pointer to pointer to const char'.
"configuration on a designated vlan", PRO_REQUIRED }; const char* TOS_network_spantree_set_0_para_1_emvalue[] = { "disable", "enable", NULL }; PARA TOS_network_spantree_set_0_para_1 = { "", emENUM, TOS_network_spantree_set_0_para_1_emvalue, "", "enable or disable STP",
If I am right about the definition of 'PARA', the initialization of is
wrong. "" and "enable or disable STP" are string literals, but
'TOS_network_spantree_set_0_para_1_emvalue' decays into a pointer to
pointer to char, a different type.
PRO_REQUIRED }; PPARA TOS_network_spantree_set_0_para[] = { &TOS_network_spantree_set_0_para_0, &TOS_network_spantree_set_0_para_1, NULL } ......
gcc(C89 setting) report warnings about that, but C99 not. I ignore those warnings and try to dump the struct, the program crashed after some output. what wrong and how I can fix it?
thanks a lot
I would say you have two options, one is to post the definitions of
all the UPPER CASE types and values used in the code snippet. The
other is to talk to the person who wrote the PERL code that generates
this, as it seems to be incorrect.
By the way, it is a very good idea indicate the exact line of your
code snippet that the compiler indicated was the cause of the error.
--
Jack Klein
Home: http://JK-Technology.Com
FAQs for
comp.lang.c http://www.eskimo.com/~scs/C-faq/top.html
comp.lang.c++ http://www.parashift.com/c++-faq-lite/
alt.comp.lang.learn.c-c++ http://www.contrib.andrew.cmu.edu/~a...FAQ-acllc.html
Jack Klein <ja*******@spamcop.net> wrote: On Wed, 1 Jun 2005 14:17:01 +0800, "bingfeng" <zh***********@topsec.com.cn> wrote in comp.lang.c:
gcc(C89 setting) report warnings about that, but C99 not. I ignore those warnings and try to dump the struct, the program crashed after some output. what wrong and how I can fix it? I would say you have two options, one is to post the definitions of all the UPPER CASE types and values used in the code snippet.
By the way, it is a very good idea indicate the exact line of your code snippet that the compiler indicated was the cause of the error.
_And_ the exact text of the warning itself. It could warn about
"incompatible types" or about "uninitialised objects" or about "your
indentation style is ugly", and the solution would be different in each
case.
Richard
>> On Wed, 1 Jun 2005 14:17:01 +0800, "bingfeng" <zh***********@topsec.com.cn> wrote in comp.lang.c:gcc(C89 setting) report warnings about that, but C99 not. I ignore those warnings and try to dump the struct, the program crashed after some output. what wrong and how I can fix it? Jack Klein <ja*******@spamcop.net> wrote:I would say you have two options, one is to post the definitions of all the UPPER CASE types and values used in the code snippet.
Indeed -- although I suspect the problem causing the crash is something
else entirely.
By the way, it is a very good idea indicate the exact line of your code snippet that the compiler indicated was the cause of the error.
In article <42***************@news.xs4all.nl>,
Richard Bos <rl*@hoekstra-uitgeverij.nl> wrote:_And_ the exact text of the warning itself. It could warn about "incompatible types" or about "uninitialised objects" or about "your indentation style is ugly", and the solution would be different in each case.
As it happens, the exact text of the warning is in the "subject"
header line. But this is not always visible to everyone when
reading the message body, so it should be repeated in (or moved
to) the message body:
"warning: initializer element is not computable at load time"
This particular warning is one that GCC emits when you use GCC's
C89-extension that allows initializing aggregates with non-constant
values. For instance:
% cat t.c
void f(int x, int y) {
int a[2] = { x, y };
...
}
This code is allowed in C99, but not in C89. GCC allows it even
without -std=c99, but will issue a diagnostic when requested:
% cc -O2 -c -W -Wall t.c
% cc -ansi -pedantic -O2 -c t.c
t.c: In function `f':
t.c:3: warning: initializer element is not computable at load time
t.c:3: warning: initializer element is not computable at load time
% cc -std=c99 -pedantic -O2 -c t.c
%
(note that "-ansi" means the same as "-std=c89", and "-pedantic"
is the option that tells GCC to emit the required diagnostic).
--
In-Real-Life: Chris Torek, Wind River Systems
Salt Lake City, UT, USA (40°39.22'N, 111°50.29'W) +1 801 277 2603
email: forget about it http://web.torek.net/torek/index.html
Reading email is like searching for food in the garbage, thanks to spammers.
thanks to all warmhearted persons at first!
I know the exact answer of that question: I initialized a huge struct in a
function then return the address of struct to caller! Auto variables are not
stored in static memory, so loader cannot load it properly. Of course, it's
a fundamental to use static variables in such case, but the parts are in
global at first. I didn't want to introduce too many global names to global
namespace, and it seems initialize such struct is impossible, so I move it
into a function scope and emit add static keyword(you know, all the code was
generated automatic by some other tool). The difference of result C89, C99
and C++
generated misled I compare the different features they supported, sigh!
As to the coredump, someone told me maybe too many local variables occupy a
lot of stack, and my test routine use recursive calls, all of that in eacess
of size of stack, so app crashed. I think him is right.
If gcc mention "local variable" or "auto variable", I would notice such
basic and important bug, but I spend four hours before I ask others view my
code!
"Jack Klein" <ja*******@spamcop.net> ????
news:cg********************************@4ax.com... On Wed, 1 Jun 2005 14:17:01 +0800, "bingfeng" <zh***********@topsec.com.cn> wrote in comp.lang.c:
I have some codes generated by perl, in which initialize some huge struct,such as
PERL is off-topic here, and your code snippet is littered with types not defined by C, so it is hard to tell.
PARA TOS_network_spantree_set_0_para_0 = { "vlan", emNUM, NULL, "",
What is the definition of the type 'PARA'? It appears to be 'pointer to pointer to char' or 'pointer to pointer to const char'.
"configuration on a designated vlan", PRO_REQUIRED }; const char* TOS_network_spantree_set_0_para_1_emvalue[] = {
"disable", "enable", NULL }; PARA TOS_network_spantree_set_0_para_1 = { "", emENUM, TOS_network_spantree_set_0_para_1_emvalue, "", "enable or disable STP",
If I am right about the definition of 'PARA', the initialization of is wrong. "" and "enable or disable STP" are string literals, but 'TOS_network_spantree_set_0_para_1_emvalue' decays into a pointer to pointer to char, a different type.
PRO_REQUIRED }; PPARA TOS_network_spantree_set_0_para[] = { &TOS_network_spantree_set_0_para_0, &TOS_network_spantree_set_0_para_1, NULL } ......
gcc(C89 setting) report warnings about that, but C99 not. I ignore those warnings and try to dump the struct, the program crashed after some
output. what wrong and how I can fix it?
thanks a lot
I would say you have two options, one is to post the definitions of all the UPPER CASE types and values used in the code snippet. The other is to talk to the person who wrote the PERL code that generates this, as it seems to be incorrect.
By the way, it is a very good idea indicate the exact line of your code snippet that the compiler indicated was the cause of the error.
-- Jack Klein Home: http://JK-Technology.Com FAQs for comp.lang.c http://www.eskimo.com/~scs/C-faq/top.html comp.lang.c++ http://www.parashift.com/c++-faq-lite/ alt.comp.lang.learn.c-c++ http://www.contrib.andrew.cmu.edu/~a...FAQ-acllc.html This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: Carl Owenby |
last post by:
Re: Microsoft Knowledge Base Article - 174942
"File Modified Outside Source Editor" Warning Message
I believe I have discovered a cause of this warning in a
specific situation. I encountered...
|
by: Todd Nathan |
last post by:
Hi. have this code and compiler problem. GCC 2.95.3, BeOS, error
"initializer element is not constant"
#ifdef FILEIO
{ static struct {
char *sfn;
FILE *sfd;
} stdfiles = {
|
by: Dave Hansen |
last post by:
Please note crosspost.
Often when writing code requiring function pointers, it is necessary
to write functions that ignore their formal parameters. For example,
a state machine function might...
|
by: Chuck Cobb |
last post by:
I'm doing a CSharp project in VS2005 and I'm getting some strange warning
messages. The problem is that the warning messages don't link to anything
in my code so they are very difficult to track...
|
by: lawrence k |
last post by:
How can I find out where my script is outputting to the screen for the
first time?
My error logs are full of stuff like this:
PHP Warning: session_start(): Cannot send
session cache...
|
by: emin.martinian |
last post by:
When trying to compile python extensions written in C using "python
setup.py build" on cygwin I get the following error:
foo.c: initializer element is not constant
foo.c: error: (near...
|
by: tankbattle |
last post by:
That is, what's the difference between
<complexType name="Address" final="restriction">
<sequence>
<element name="name" type="string"/>
<element name="street" type="string"/>
<element...
|
by: Zhang Weiwu |
last post by:
Dear all
How does javascript realiablily tell if a variable is a reference to an
HTML Element "<select>", without causing browser to pop up error message?
if (variable.constructor ==...
|
by: zoeb |
last post by:
Hi,
I am declaring an array which carries x coordinates, however these will vary depending on the geometry the user enters.
I have set my code up as follows, but get the "initializer element...
|
by: taylorcarr |
last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
|
by: Charles Arthur |
last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
|
by: ryjfgjl |
last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
|
by: ryjfgjl |
last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
|
by: BarryA |
last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
|
by: Hystou |
last post by:
There are some requirements for setting up RAID:
1. The motherboard and BIOS support RAID configuration.
2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
|
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,...
|
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,...
|
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...
| |