Solved

error C2177: constant too big

Posted on 2004-09-23
5
808 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
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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Suggested Solutions

Introduction This article is the first in a series of articles about the C/C++ Visual Studio Express debugger.  It provides a quick start guide in using the debugger. Part 2 focuses on additional topics in breakpoints.  Lastly, Part 3 focuses on th…
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 goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…

910 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

Need Help in Real-Time?

Connect with top rated Experts

25 Experts available now in Live!

Get 1:1 Help Now