我非常喜欢编程而且我不理解为什么我的程序不能构建。我不知道问题究竟在哪里。对我而言似乎应该有效。这些大多是我在互联网上找到的例子。
有一些代码: 主:
#include <stdlib.h>
#include <stdio.h>
#include "mod.h"
//Pagrindinis kodas
int main() {
push(*s, 15);
push(*s, 4);
push(*s, 18);
printf("%d",s->data[0]);
system("PAUSE");
return 0
}
Mod.c:
#define DEBUG 0
#include<stdio.h>
#include"mod.h"
//------------------------------------------------------------------------------
void push(struct Stack *s, int value)
{
if (s->size >= MAX_DATA - 1)
{
#if DEBUG
printf("Elementas nepridetas. Neuztenka masyve vietos.\n");
#endif
}
else
{
s->data[s->size] = value;
s->size++;
#if DEBUG
printf("Pridetas elementas.\n");
#endif
}
}
//------------------------------------------------------------------------------
int pop(struct Stack *s)
{
if (s->size > 0)
{
#if DEBUG
printf("ispopintas elementas.\n");
#endif
return s->data[s->size] = 0;
} else {
s->data[s->size] = 0;
s->size--;
}
}
Mod.h:
#include <stdio.h>
#include <stdlib.h>
#ifndef MOD_H_INCLUDED
#define MOD_H_INCLUDED
#define MAX_DATA 30
typedef struct Stack {
int data[MAX_DATA];
int size;
} Stack;
// This function adds element to the end of the structure.
void push(struct Stack *s, int value);
// This function removes element from the end of the structure.
int pop(struct Stack *s);
//int pop(struct Stack *s)
#endif // MOD_H_INCLUDED
为什么它不构建的任何建议?
答案 0 :(得分:1)
您需要声明Stack
类型的变量。
#include <stdlib.h>
#include <stdio.h>
#include "mod.h"
//Pagrindinis kodas
int main() {
Stack *s = calloc(sizeof(Stack), 1); // calloc allocates memory and sets all bits to 0.
push(s, 15); // No * needed here. s is already a Stack* and the function expects a Stack*
push(s, 4);
push(s, 18);
printf("%d",s->data[0]);
system("PAUSE");
return 0
}
可能会有更多错误,但这应该可以解决Main的编译问题。