嗨在Visual Studio 2008上嘗試此代碼時,我無法找到編譯錯誤的原因。我試圖看到char *通過函數返回值。錯誤C2106:'=':左操作數在VS2008上必須是c值的l值
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static char* getActiveModuleType(void);
void main()
{
char getActiveModuleBuff[128];
//error C2106: '=' : left operand must be l-value
getActiveModuleBuff = getActiveModuleType();
printf("Active module in well formatted (2): %s\n",getActiveModuleBuff);
exit(0);
}
char* getActiveModuleType(void)
{
char activeModule[128];
int tempBuffLen=0;
int nbActivemodule = 0;
char moduleA = 1;
char moduleB = 1;
char moduleC = 0;
char moduleD = 1;
int i = 0;
if(moduleA==1) {activeModule[i] ='A'; activeModule[i+1]=','; i= i+2;}
if(moduleB==1) {activeModule[i] ='B'; activeModule[i+1]=','; i= i+2;}
if(moduleC==1) {activeModule[i] ='C'; activeModule[i+1]=','; i= i+2;}
if(moduleD==1) {activeModule[i] ='D'; activeModule[i+1]=','; i= i+2;}
printf(" Active module in : %s\n",activeModule);
//let get get the last ',' value trucated
tempBuffLen = strlen(activeModule);
nbActivemodule = tempBuffLen/2;
if((tempBuffLen == 0) && (nbActivemodule ==0)){
memcpy(activeModule,"NoActiveModule",14);
return activeModule;
}
if(activeModule[tempBuffLen-1]==',')
activeModule[tempBuffLen-1] = '\0';
printf(" Active module in well formatted : %s\n",activeModule);
return activeModule;
}
我無法找到爲什麼此錯誤C2106發生在此代碼中。
需要幫助。
感謝
它試圖告訴你的是'='的左操作數必須是*可修改的*左值。數組是左值,但總體來說它們不是*可修改*。你不能給數組分配任何東西。 – AnT