⑴ C/C++ 頭文件引用問題【整理】
include <> 引用編譯器的類庫路徑下的頭文件
include 「」 引用工程目錄的相對路徑的頭文件
include 是編譯指令,在編譯時,編譯器會將相對路徑替換成絕對路徑,因此,頭文件絕對路徑=搜索路徑+相對路徑。
Xcode Build Settings 下 Search Paths設置搜索路徑
Header Search Paths:頭文件搜索路徑設置
(SRCROOT)宏和(PROJECT_DIR)宏都指xxx.xcodeproj所在的父目錄
例如:引用工程testDemo/scr/test.h 頭文件,
Header Search Paths中添加$(SRCROOT),引用為include 「scr/test.h"
如果在Header Search Paths中添加(SRCROOT)/scr,那麼頭文件引用直接引用 include 「test.h」
如果有多個.a文件格式就像這樣
(inherited) "(SRCROOT)/xxxx" "(SRCROOT)/xx"
如果取的是相對是絕對路徑那麼工程移到別的地方就有可能導致運行出錯。所以要改成相對路徑
⑵ vc 中的頭文件相互引用的錯誤!
你的問題不是頭文件互相引用引起的,而是因為yy()這個函數被你定義在了頭文件中,把yy放到隨便哪個cpp里去,然後在公用的頭文件里聲明一下應該就可以了
編譯沒問題就先給分,運行有問題那是程序邏輯的事,需要調試
⑶ 兩個頭文件是相互調用的,此時應怎麼辦
兩個頭文件是不可以相互調用的。
舉個例子,我有4個文件,a.h,a.cpp,b.h,b.cpp
你如果在a.h裡面include"b.h",那麼在b.h裡面就不能include"a.h",會出錯.不過你可以在b.cpp裡面"a.h",
反過來也是一樣的
關鍵是你說的互相調用這個詞。
我們的理解是:
你在a.h裡面寫:
include "b.h"
然後又在b.h裡面寫:
include "a.h"
這種寫法是錯誤的!
如果只是為了保證頭文件只可能被include一次的話,你要這樣:
#ifndef A_H
#define A_H
...//頭文件內容
#endif
或者如果是在vs裡面的話就直接在開頭寫:
#pragma once就可以了
⑷ c語言自定義頭文件在一個project中,在另一個project里可以引用嗎
引用頭文件是需要正確的路徑,一般來說一個工程有一系列的include路徑,在這些路徑下的頭文件都可以被正確找到。
而不同的工程include路徑不相同,因此無法找到。
如果一定要使用,有幾個選擇,
1是直接拷貝一份過來,如果要拷貝的頭文件還引用了其他的頭文件,也要按照相對路徑位置一並拷過來。如果需要拷貝的文件太多,說明兩個工程聯系緊密,考慮合並起來成為一個工程。
2是增加一個include路徑,不同的編譯環境有不同的操做,比如VS在這里
編輯VS的包含目錄
編輯這個「包含目錄」,讓它增加一條,這樣就可以引用到其他地方的頭文件。
⑸ c語言在頭文件中如何引用另一個頭文件中的函數
1、首先建頭文件是為了聲明c文件中的函數,以及包括宏定義。建立頭文件要有對應的c文件。
⑹ C語言頭文件相互引用
包含conio.h的文件。該文件稱位頭文件。雙引號表示從當前目錄中找,如果找不到就到標准庫中找。
#include
<conio.h>這個是從標准庫中找。
⑺ C語言 頭文件相互引用的問題
增加頭文件c.h包含a.h,b.h 聲明void testb();
在c.c內實現testb();
另外防止頭文件被多次包含時重復定義 需要用
#ifndef
#define
````
#endif
來修飾頭文件內容 以防止重復編譯
⑻ c語言在頭文件中如何引用另一個頭文件中的函數
file1.c
頭文件為file1.h
file2.c
頭文件為file2.h
比如file2.c要調用file1.c里的一個函數
首先file2.c里要包含file1.h頭文件(file1.h里有file1.c的函數申明)
然後file2.c文件里要有file1.c里的外部函數申明,用extern關鍵字申明
然後就可以直接file2.c裡面調用file1.c里的函數了
我在單片機里是這樣弄的完全沒問題,51,avr,pic都可以
⑼ 在c語言中如何實現兩個頭文件相互調用
文件調用用宏定義啊
比如:
#include
"
路徑
"
其實,平常用的
#include
<stdio.h>就是調用stdio.h文件
互相調用的話,
比如fi.h要調用f2.h,
那就在f1.h里的前面加上#include
<f2.h>就行了
⑽ 怎樣解決C頭文件相互引用的問題
#pragma once 或者 #ifndef ***_H #define ***_H 定義內容 #endif