[英]typedef struct: unknown name
我對我的實際問題感到困惑......也可能是我的錯誤
帶有代碼的簡短描述:
rtc.h
#ifndef RTC_H_
#define RTC_H_
typedef struct timestamp_t
{
uint8_t year,month,day,hour,minute,second;
}timestamp_t;
#endif /* RTC_H_ */
lpwa.h
#ifndef LPWA_H_
#define LPWA_H_
#include "rtc.h"
timestamp_t lpwa_ntp_to_stamp(char*); //shows error: unknown name timestamp_t
#endif /* LPWA_H_ */
lpwa.c
#include "lpwa.h"
timestamp_t lpwa_ntp_to_stamp(char *text) //no problem
{
...
}
如果我將 typedef 結構復制到 lpwa.h,它會顯示“timestamp_t 的沖突類型”
我錯過了什么或者這不可能嗎?
這是根據我的調試建議編譯的答案,它幫助 OP 找到實際問題:
#error Header A is compiled
#error Header B is compiled
在項目的所有可能和不太可能的位置大量編譯,這將使您了解實際的包含樹,從而使您可以查找與想象中的包含樹的差異。 (如果你的編譯器支持,使用#warning
,那么你得到的不僅僅是遇到的第一個#error
。)#error
還會提醒您查看與編譯器實際處理的文件不同的文件(例如在編輯器中)可能存在的問題。 (同樣,不是 mocking。對我來說,這種情況發生的頻率比我想承認的要多......)以上是一般情況。
特別是在您的情況下,我懷疑在顯示的包含和顯示的 typedef 之間有一個隱藏/間接的#include "lwpa.h"
在 rtc.h 中。 (我認為你證實了這一點。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.