[英]C typedef struct uncertainty
考慮一下C中的以下typedef結構:
21:typedef struct source{
22: double ds; //ray step
23: double rx,zx; //source coords
24: double rbox1, rbox2; //the box that limits the range of the rays
25: double freqx; //source frequency
26: int64_t nThetas; //number of launching angles
27: double theta1, thetaN; //first and last launching angle
28:}source_t;
我得到錯誤:
globals.h:21:錯誤:“結構源”的重新定義
globals.h:28:錯誤:“ source_t”的類型沖突
globals.h:28:注意:之前'source_t'的聲明在這里
我嘗試使用其他格式進行此定義:
struct source{
...
};
typedef struct source source_t;
和
typedef struct{
...
}source_t;
兩者都返回相同的錯誤。 為什么會這樣? 對我來說看起來很不錯。
您確定沒有兩次包含標頭(避免#pragma once
使用#ifndef
/ #pragma once
以避免這種情況)嗎? 即使您的構造中有一些錯誤,它也不應該觸發錯誤“'...'的重新定義”,因為這是第一行嗎?
最可能的原因是頭文件被多次包含。 您需要確保這種情況下,typedef僅執行一次。
您可以通過將globals.h包裝為:
#ifndef _globals_h_
#define _globals_h_
[...]
#endif
錯誤表明struct source
已定義多次。
也許您兩次包含了頭文件?
為了安全起見,請確保您的標頭僅包含一次:放
#ifndef YOUR_HEADER_FILE_NAME
#define YOUR_HEADER_FILE_NAME
一開始,
#endif
在頭文件末尾:這將防止任何源文件將其包含兩次或更多次。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.