簡體   English   中英

C類型定義結構不確定性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM