我有三個文件變量是一個永遠無法結束的類型
- 的main.c
- myStruct.h
- myStruct.c
聲明我看了一些帖子在哪裏定義一個結構和封裝,我想在頭文件中聲明我的結構並在源文件中定義它。
這就是我測試過的。
myStruct.h
// myStruct.h
#include "stdint.h"
typedef struct myStruct myStruct_type;
myStruct.c
// myStruct.c
#include "myStruct.h"
struct myStruct {
uint32_t itemA;
uint32_t itemB;
uint32_t *pointerA;
uint32_t *pointerB;
};
的main.c
// main.c
#include "myStruct.h"
myStruct_type testStruct; // This is where I get the error message
int main (void) {
while (1);
return 0;
}
當我嘗試編譯(Keil公司uVision)我得到以下錯誤「變量'testStruct'聲明瞭一個未完成的類型myStruct_type testStruct「
我錯過了什麼?
結構定義需要在需要的每個點都可見。將它從c文件移動到h文件。 –
將'struct myStruct'移動到頭文件中。否則它不可見main.c – kaylum
或者把'myStruct_type * new_myStruct_type(void){return malloc(sizeof(myStruct_type)); }'到'myStruct.c'和'main()'中,只需定義'myStruct_type * pmyStruct = new_myStruct_type();'。 – alk