错误消息是:错误:未声明“ basicInfo”(此功能首次使用) basicInfo-> errorlog = malloc(VAL_SZ);
#include <stdio.h>
#include <stdlib.h> //malloc
#include <string.h> //strdup
#define VAL_SZ 64
typedef struct {
char* errorlog;
char* cache_size;
char* cache_replacment;
int timeout;
} basicInfo_t;
int main(int argc, char* argv[]) {
//-------------BASIC INFO SETUP-------------\\
basicInfo_t* basicInfo = malloc(sizeof(basicInfo_t));
basicInfo->errorlog = malloc(VAL_SZ);
basicInfo->cache_size = malloc(VAL_SZ);
basicInfo->cache_replacment = malloc(VAL_SZ);
return 0;
}
答案 0 :(得分:1)
在评论中,您在末尾使用了\\
//-------------BASIC INFO SETUP-------------\\
告诉编译器将语句继续到下一行。 因此,该行
basicInfo_t* basicInfo = malloc(sizeof(basicInfo_t));
实际上对编译器不可见(=已注释掉)。
删除\\
,它应该可以工作。
答案 1 :(得分:1)
您对注释格式过于机灵。反斜杠字符作为源代码行的最后一个字符使下一行成为延续-完全忽略反斜杠和紧随其后的行终止符。这种情况很早就在源代码处理中发生,之后才被认为是注释。
由于前面的注释行以反斜杠结尾,因此您(表示)声明变量basicInfo
的行实际上是注释的一部分。因此,确实没有该变量的实际声明。只需删除评论末尾的两个反斜杠,或者在其后添加一个空白行即可。
顺便说一句,在我的编辑器中突出显示语法的原因。我不知道您的编辑器,但是如果您的编辑器做的不一样,那么比较聪明的人可能会对您有所帮助。