[英]#include <iostream> in multiple files
我希望這個網站以前沒有問過這個問題。 我無法從Google找到可靠的答案。
當您在項目的多個文件中包含iostream時,會發生什么情況? 我總是在頭文件中使用#ifndef和#define。 這是否會阻止iostream被多次包含?
我對此問題有兩種解釋:
iostream
嗎?
iostream
被多次包含嗎?
#ifndef
和#endif
之間(或在標有#pragma once
的標頭中,在支持它的編譯器中)之間的所有內容被編譯器多次查看...這就是包含防護的內容對吧? 但這對於#include <iostream>
並不是真正需要的,因為已經保護了它免受多個包含。 就像克里斯(Chris)和哈魯根(Haroogan)所說,是的,他們將防止這種情況發生。 #ifndef和#define是預處理程序指令,並且被英語翻譯為
#ifndef(如果未定義)
#定義(定義)
因此,如果您創建一個標頭,並兩次#include“ myheader.h”,則該文件將不會再次包含,因為您將其包含在if語句中,這將導致該文件僅在包含時才被包含(並定義)。尚未包含(定義)。
而不管。 即使使用ifndef
您仍然嘗試多次包含它。 因為多個文件將被包含一次。 並嘗試包含<iostream>
但是如果您打開<iostream>
#pragma once
這基本上意味着它只會被包含一次。 建議不要使用該方法避免我在行業中發現多個內容。 因為很難知道它不會再被包含。 與查看ifndef的頂部和底部相比。
#ifndef __IOSTREAM_H
#include <iostream>
#endif
...
似乎大多數標准標頭都具有上述的包含保護。
或者,您可以通過定義所需的宏來創建自己的包含保護。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.