搜索了一会儿。我编写了一个简单的程序来尝试解决我的更大问题,更容易获得很少或没有成功。这是主要工作正常的代码:
typedef struct nimaginario{
int parte_real;
int parte_imaginaria;
}nimaginario;
int suma(nimaginario *n){
return n->parte_real + n->parte_imaginaria;
};
#include <stdlib.h>
int main(){
nimaginario *num = malloc(sizeof(nimaginario));
num->parte_real = 1;
num->parte_imaginaria = 2;
int a = suma(num);
}
然后我尝试将它分成应该组织的不同部分。比如说:prueba.c,prueba.h和main.c
prueba.h:
#define PRUEBA_H
#ifndef PRUEBA_H
typedef struct nimaginario{
int parte_real;
int parte_imaginaria;
}nimaginario;
int suma(nimaginario *n);
#endif
prueba.c:
#include "prueba.h"
int suma(nimaginario *n){
return n->parte_real + n->parte_imaginaria;
};
main.c中:
#include <stdlib.h>
#include "prueba.h"
int main(){
nimaginario *num = malloc(sizeof(nimaginario));
num->parte_real = 1;
num->parte_imaginaria = 2;
int a = suma(num);
}
首先我使用'gcc main.c'命令编译 第二,我做了如下:'gcc prueba.c main.c'
并且第二次和这个特定的尝试(在一百个中)我得到了这个错误:
prueba.c:3:10: error: unknown type name `nimaginario'
main.c: In function `main':
main.c:18:2: error: unknown type name `nimaginario'
main.c:18:35: error: `nimaginario' undeclared (first use in this function)
main.c:18:35: note: each undeclared identifier is reported only once for each function it appears in
main.c:19:5: error: request for member `parte_real' in something not a structure or union
main.c:20:5: error: request for member `parte_imaginaria' in something not a structure or union
我想我已经尝试过所有事情。并且看到了我能看到的所有错误。我也搜索过很多东西,并在Stackoverflow中搜索,但没有成功。
我尝试过的事情:
我只是没有锤子关闭。我觉得这么麻木只有一年没有C ......
答案 0 :(得分:7)
include guards; - )
存在问题你想先检查,然后定义,而不是相反。
#define PRUEBA_H
#ifndef PRUEBA_H
...
应该是
#ifndef PRUEBA_H
#define PRUEBA_H
....
答案 1 :(得分:4)
非常微妙的,前两行的顺序错误 1 :
#define PRUEBA_H
#ifndef PRUEBA_H
// declare everything
#endif
这样做是在定义符号,因为是定义的,#ifndef
和#endif
之间的所有内容都不包括在内。
需要:
#ifndef PRUEBA_H
#define PRUEBA_H
代替。
1 显然,你检查的第三点是:
可能有一点 more 检查: - )