簡體   English   中英

g ++中的.h和.H頭文件

[英].h and .H header files in g++

我在具有C ++庫的Ubuntu上使用g ++,其頭文件全都以.H結尾,而不是傳統的.h。

我寧願不修改include目錄...否則,我可能只會創建指向.h版本標頭的符號鏈接。

我想知道是否有一種簡單的方法可以讓g ++自動識別.H和.h文件相同,以便可以在程序中編寫header.h或header.H嗎? 我瀏覽了g ++手冊頁,但是很難判斷它是否支持這種功能。

.H是C ++頭文件與C頭文件(也包括.hpp或.hxx)不同命名的一種方式。 這僅適用於區分大小寫的OS。

如果文件具有.H,只需#include <file.H>

問題源於文件系統。 您的文件系統區分大小寫,因此可以看到header.h和header.H之間存在差異。 這不是g ++問題。 在不區分大小寫的文件系統/ OS上運行,您不會看到此問題,就像在Win32系統上運行g ++一樣。

我認為這是Linux文件系統的實現細節。 盡管在Windows上.h和.H文件實際上是相同的,但在Linux上,您可以在同一目錄中擁有Traditional.h和Traditional.H。

如果我理解正確,則只需在包含標題的文件中指定大寫字母H。

如果您不希望重命名頭文件或擁有源#include .H文件,則可以創建一組.h文件,它們僅#include相應的.H文件。

我想不出任何簡單的方法來使gcc變得不區分大小寫,因此您可能需要咬緊牙關並使用其他解決方案,例如

#include "foo.H"

...或創建一些符號鏈接:

# create .h links to all .H files below the current dir
for basename in `find . -name *.H | sed 's/\(.*\)\..*/\1/'`; do
  ln -s $basename.H $basename.h
done

僅供參考, gcc郵件列表中最近一個線程要求不區分大小寫 響應主要與效率有關-如果您開始要求編譯器查找“ foo.h”的所有版本(例如“ FOO.H”,“ Foo.H”,“ foo.H”),則您會更頻繁地訪問磁盤。 誰需要更長的構建時間? :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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