2012-05-03 38 views
0

沒有任何功課,但在做基礎知識時似乎已經迷失了方向,因此詢問。關於訪問不同源文件中定義的結構體

說我有2個C源文件。 1.C & 2.C

2.C如下:

typedef struct mystr_ 
{ 
    int a; 
    float b; 
}mystr; 

void fun() 
{ 
    mystr q; 

    some code.... 
} 

而且1.C是如下:

#include "stdio.h" 

void fun(); 


main() 
{ 
    //How to access/declare a variable of type mystr here. 

    mystr *v1;//This obviously gives compiler errors 

     some code....  

} 

如何訪問在2定義的結構myStr中。 c從文件1.c中獲得那個結構類型的變量?

編輯:

對不起在OP提到忘記。由於某種原因,我無法將頭文件中的聲明移出 - >我試圖在現有的代碼中進行檢查,這是一種快速入侵。那麼是否有任何方法直接從其他源文件訪問它?

+0

在頭文件中定義'mystr'並將其包含在兩個C文件中。 –

+0

沒有辦法從其他源文件訪問它。 – Feo

回答

3

使用標題。

1.c

#include "2.h" 
#include "stdio.h" 

void void fun(); 

編輯,創建一個文件2.h

typedef struct mystr_ 
{ 
    int a; 
    float b; 
}mystr; 

,包括它: 因爲你不能聲明提取到一個頭文件,包括它,沒有其他方式複製聲明。這是一個非常脆弱的結構,很快,但主要是骯髒的,除非你沒有其他選擇,否則不推薦。

+0

對不起在OP中忘記提及。由於某種原因,我無法將頭文件中的聲明移出 - >我試圖在現有的代碼中進行檢查,這是一種快速入侵。那麼是否有任何方法直接從其他源文件訪問它? – goldenmean

+3

你可以隨時複製和粘貼:-) – hirschhornsalz

+0

謝謝。複製粘貼1.c中的結構定義,我可以創建該類型的變量。不知道是否重新聲明或重新定義結構mystr?它似乎重新聲明,因爲它沒有重新定義錯誤。 – goldenmean