Microsoft KB Archive/143083

= FIX: C2664 When Array Is Passed as a Parameter to a Function =

Article ID: 143083

Article Last Modified on 7/5/2005

-

APPLIES TO


 * Microsoft Visual C++ 4.0 Professional Edition
 * Microsoft Visual C++ 4.1 Subscription
 * Microsoft Visual C++ 4.2 Professional Edition
 * Microsoft Visual C++ 4.2 Enterprise Edition
 * Microsoft Visual C++ 5.0 Learning Edition
 * Microsoft Visual C++ 5.0 Learning Edition

-



This article was previously published under Q143083



SYMPTOMS
The compiler will generate the following error when you pass a multiple subscript array to a function that expects a const of the same type of array:

error C2664: 'Func2' : cannot convert parameter 1 from 'int [4][4]' to

'const int [][4]' (new behavior; please see help)



RESOLUTION
Don't declare the parameter to be 'const' in the function definition.



STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This bug was corrected in Visual C++ version 5.0.



Sample Code to Demonstrate Problem
/* Compile options needed: None */

typedef int Matrix1[4]; typedef int Matrix2[4][4];

void Func1( const Matrix1 ) {}

// Remove const in the following statement to work around

void Func2( const Matrix2 ) {}

void main {     Matrix1 a = {1,2,3,4}; Matrix2 b = {1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4};

Func1( a ); Func2( b );  // C2664 here }

Additional query words: kbVC400bug

Keywords: kbbug kbfix kbvc500fix kbcpponly kbcompiler KB143083

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.