Solved

error C2177: constant too big

Posted on 2004-09-23
5
837 Views
Last Modified: 2008-01-09
Hello.
I have this code:
------CODE-----
char buff[ 256 ];
buff=0x53006500630052004500740030003100;
-----\CODE-----
Which gives these errors:
-----ERRORS-----
error C2177: constant too big
error C2440: '=' : cannot convert from 'const int' to 'char [256]'
        There are no conversions to array types, although there are conversions to references or pointers to arrays
-----\ERRORS-----

What am I doing wrong?? The text on msdn didn't helped.
0
Comment
Question by:Kappa_Alfa_Kappa
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
5 Comments
 
LVL 55

Expert Comment

by:Jaime Olivares
ID: 12138383
buff=0x53006500630052004500740030003100;
Definitively it won't work in every compiler I know.

Largest value you can have (as far as I know) is 64 bits, that is 16 hex digits. Something like:
buff=0x5300650063005200;
0
 
LVL 55

Expert Comment

by:Jaime Olivares
ID: 12138392
What is exactly what you want to do? You are declaring a char array, but you are trying to asign it an big number, that doesn't seems reasonably. Maybe you can post more code.
0
 

Accepted Solution

by:
feldspar2 earned 80 total points
ID: 12138819
To populate your buffer you will need to use syntax that specifies it as an array:

char buff[256] = {0x53, 0x00, 0x65, ...};  //  a list of 256 one-bye chars



0
 
LVL 3

Expert Comment

by:teratoma
ID: 12140284
The "constant too big" error is because any manifest constant must be able to fit into one of the built-in types.  0x53006500630052004500740030003100 is a 16-byte value that won't fit into any int or long or long long, because these types are at max 64 bits or 8 bytes.

The "cannot convert from 'const int' to 'char [256]" error is because buff is an array, and an array is not something that can be assigned to (an lvalue).  feldspar2 gives the correct syntax for initializing an array, which is not the same thing as assignment.  If you need to declare your array first and later fill it with values, use strcpy, memcpy, or something similar.

What you probably want to do is to declare your constant as a string like this:

const char buf[] = "53006500630052004500740030003100";

Then you can tear it apart piece by piece using various library functions for converting strings to integers.  Check out stringstream in your favorite C++ book.
0
 

Author Comment

by:Kappa_Alfa_Kappa
ID: 12140860
Thanks, that's what I wanted to know...
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Often, when implementing a feature, you won't know how certain events should be handled at the point where they occur and you'd rather defer to the user of your function or class. For example, a XML parser will extract a tag from the source code, wh…
This article shows you how to optimize memory allocations in C++ using placement new. Applicable especially to usecases dealing with creation of large number of objects. A brief on problem: Lets take example problem for simplicity: - I have a G…
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.
The viewer will learn how to clear a vector as well as how to detect empty vectors in C++.

739 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question