translation-unit

    1熱度

    1回答

    據我所知,每個翻譯單元上的每個模板都有不同的實例,而據我的理解,翻譯單元大致是一個cpp文件。 所以,如果我有一個包含以下內容命名test.hpp文件: // test.hpp template <typename T> void test() { static T t = T(0); return t++; } 對於每一個翻譯單元,我應該有test不同的實例,即使模

    1熱度

    2回答

    對於某個對象的唯一標識,我可以用兩種方法創建計數器,但我不知道哪一個更好雖然它們在代碼中有很大不同不是字節碼,我不知道)。 第一種方法是將有它使用一個靜態變量一些功能: 部首: unsigned int GetNextID(); CPP: unsigned int GetNextID() { static unsigned id{0}; return id++; }

    3熱度

    1回答

    從下面stackoverflow answer,用戶說: 這意味着該變量是本地的一個翻譯單元(簡單地說, 到一個源文件),並且不能從外面訪問。這 使用靜態的其實是在當前的C++標準棄用 - ,而不是你應該使用匿名的命名空間: static int x = 0; 應該是: namespace { int x = 0; } 我不不同意匿名命名空間是首選的方法, 但現在使用靜態真的

    2熱度

    2回答

    例子: 說我包括我的預編譯頭文件: #include <vector> 作爲載體的少數情況下,如性病::載體,性病::向量等等都在我的項目經常使用,將它減少編譯時間,如果我在這樣的precomiled頭實例他們還有: #include <vector> template class std::vector<float>; template class std::vector<int>;

    3熱度

    2回答

    因此,我知道靜態函數是文件本地的函數。因此,他們不能從其他文件訪問。這是否也適用於課程?我已經讀了很多關於static class如何不聲明類包含純靜態成員和方法(這是顯而易見的)的爭議,但是找不到任何提及該類是否可以在本地訪問的類文件範圍,更符合邏輯。 如果沒有,那麼使用匿名命名空間,我聽說也可以用來聲明文件本地函數?

    3熱度

    1回答

    我在理解N3638中描述的auto類型說明符的C++ 14擴展如何實現以及允許的內容方面有些困難。 具體變化爲標準人說, 如果函數的聲明的返回類型包含的佔位符類型,函數的返回類型從return語句中的身體推導功能,如果有的話。 當函數的主體與聲明位於同一個文件中時,很容易看出它是如何工作的;但考慮一下頭文件聲明使用auto佔位符的方法但未定義它的情況。包含此頭文件但包含而非的翻譯單元如何包含定義成

    -1熱度

    1回答

    以下內容將生成正常。當我嘗試在不同的庫中使用函數時,出現鏈接器錯誤。 OtherClass.obj : error LNK2019: unresolved external symbol "public: float __cdecl myClass::myClassStruct::myConvoludedFunction(int,int)" ([email protected]@[email pr

    3熱度

    1回答

    我無法找到翻譯單元,編譯單元,目標文件,可執行文件之間的區別......在很多地方我看到過那個被用來代替其他。 我知道這些文件是在C++程序編譯和鏈接期間生成的。任何人都可以列出在這些過程中生成的所有文件,並指定它們之間的區別?

    12熱度

    1回答

    有人可以解釋這個C++編譯錯誤的性質嗎?我正在研究/學習如何重載全球運營商的新增,刪除及其變體。我讀了一個coupleofarticlesonthesubject,但我找不到一個似乎專門解決這個問題。 守則 foo.h: #ifndef foo_h #define foo_h void* operator new(size_t); void* operator new[](size_t);