0
#include <stdio.h>
#include <stdlib.h>
#include "ReadMethods.h"


int main(int argc,char * argv[])
{

DPDA WordChecker;
DPDA * WordCheckerPointer=&WordChecker;

WordChecker.DPDAFilename=(char*)malloc(25*sizeof(char));
WordChecker.DPDAInputFilename=(char*)malloc(25*sizeof(char));
WordChecker.DPDAOutputFilename=(char*)malloc(25*sizeof(char));
strcpy( WordChecker.DPDAFilename,argv[1]);
strcpy( WordChecker.DPDAInputFilename,argv[2]);
strcpy( WordChecker.DPDAOutputFilename,argv[3]);

readDPDA(argv[1],WordCheckerPointer);
readInputLines(argv[2],WordCheckerPointer,argv[3]);

return 0;
}

这是我的代码,它从 mallocs 到最后一个 strcpy() 给出错误,总共 6 行。错误是“DPDA 没有名为 DPDAFilename 的成员”,对于我处理的每个 malloc 和 strcpy 行的其他字段也是如此。这是部分头文件。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct tagRule{
char *startingState;
char symbolToPop;
char expectedInput;
char *endingState;
char symbolToPush;
}Rule;

typedef struct tagStackDPDA{
char * arrayOfSymbols;
int stackElementCount;
char * currentState;
}stackDPDA;

typedef struct tagDPDA{
char * alphabet;
char * stackSymbols;
char ** states;
char *startingState;
char **finalStates;
int finalStatesAmount;
Rule * ruleList;
stackDPDA stackOfDPDA;
int sizeArray[4];//This array holds amount values of states,alphabet symbols,stack       symbols and transition rules
char *DPDAFilename;
char *DPDAInputFilename;
char *DPDAOutputFilename;
}DPDA;

该代码在代码块环境中运行良好,但在 gcc (-Wall -ansi) 中运行良好。这些文件名来自输入文本文件,但我不确定它是否会导致此错误。编辑:顺便说一句,我正在使用此命令行进行编译;

gcc -Wall -ansi main.c ReadMethods.h -o WordChecker
4

1 回答 1

1

可能如果你在 C 模式下编译,你必须在标题中使用 C 风格的注释?/**/ 代替 //

于 2013-11-15T12:43:24.493 回答