मैं किसी मौजूदा कोड का उपयोग कर रहा हूं जिसे किसी और ने लिखा है, और मैं इसे संकलित नहीं कर सकता (यहां सीमित सी अनुभव है लेकिन मैं सीखने की कोशिश कर रहा हूं!)।सी ++ वैरिएबल-साइज सरणी को रोकता है
utilities.cc
#include "utilities.h"
FILE *open_file(char *filename, const char*extension, const char *access)
{
char string[MAX_STR_LEN];
FILE *strm = NULL;
if(filename[0]=='\0')
{
printf("\n INPUT FILENAME (%s) > ",access);
fgets(string,MAX_STR_LEN,stdin);
sscanf(string,"%s",filename);
printf(" FILE %s opened \n", filename);
}
int len=strlen(filename);
if(len + strlen(extension) >= MAX_STR_LEN)
{
printf("\n ERROR: String Length of %s.%s Exceeds Maximum",
filename, extension);
return(NULL);
}
// char *filename1 = new(char[len+strlen(extension)+1]);
const int filenameLength = len+strlen(extension)+1;
char *filename1 = new(char[filenameLength]);
strcpy(filename1,filename); // temp filename for appending extension
/* check if file name has .extension */
/* if it does not, add .extension to it */
int i=len-1;
while(i > 0 && filename[i--] != '.');
// printf("\n Comparing %s to %s", extension, filename+i+1);
if(strcmp(extension, filename+i+1) )
strcat(filename1,extension);
if((strm = fopen(filename1, access)) == NULL)
{
printf("\n ERROR OPENING FILE %s (mode %s)", filename1,access);
}
delete(filename1);
return(strm);
}
यहाँ त्रुटि है। तुम मुझे कृपया पता है किसी भी अतिरिक्त जानकारी की जरूरत है
Compiling utilities.cc ...
src/utilities.cc: In function ‘FILE* open_file(char*, const char*, const char*)’:
src/utilities.cc:251: error: ISO C++ forbids variable-size array
gmake: *** [/home/landon/geant4/work/tmp/Linux-g++/exampleN01/utilities.o] Error 1
त्रुटि लाइन 251 पर
char *filename1 = new(char[filenameLength]);
को दर्शाता है।
क्या आप '-वायरर' पास कर रहे हैं जो चेतावनियों को त्रुटियों के रूप में मानता है? जी ++ वीएलए को विस्तार के रूप में अनुमति देता है। –
वास्तव में, यह सी है, सी ++ नहीं। आप बस एक सी ++ कंपाइलर का उपयोग कर रहे हैं। –
सी ने 'नया' और 'हटाएं' कीवर्ड कब पेश किया? – DavidO