[英]Calling a C file in C++ is giving errors
可重現的錯誤代碼是: 它開始給出錯誤: 如何解決這個問題? 我已將編譯器設置為 C++14 並且我正在使用 Visual Studio 2019。我在主 cpp 文件中調用的非主 cpp 文件中使用它。 我得到的主要錯誤是 malloc 和我注意到的 calloc 。 我也收到 getch() 錯誤 ...
[英]Calling a C file in C++ is giving errors
可重現的錯誤代碼是: 它開始給出錯誤: 如何解決這個問題? 我已將編譯器設置為 C++14 並且我正在使用 Visual Studio 2019。我在主 cpp 文件中調用的非主 cpp 文件中使用它。 我得到的主要錯誤是 malloc 和我注意到的 calloc 。 我也收到 getch() 錯誤 ...
[英]Including extern c header results in broken preprocessor output
我有一個結構如下的源代碼 foo.h(來自 c 庫的頭文件) 酒吧.h 酒吧.cpp 用戶.cpp 我期望發生的是,如果 foo.h 包含多次,#pragma once 將使它成為唯一的第一次。 但是發生的情況是,在 bar.h 中根本不包含它,並且僅包含在 user.cpp 中的作品。 所以 u ...
[英]extern c template instantiation
我想編寫一個模板函數並在 extern "C" 塊內顯式實例化它以避免代碼重復。 這是我的意思的例子: ...
[英]One-liner extern "C" for a variable - legit?
考慮以下翻譯單元: 我知道對int進行 C 處理並沒有多大意義。 並且int x = 1已經保證了外部鏈接,但這應該可行。 它做了什么; 問題是,GCC 警告使用它,而 clang 沒有:在 GodBolt 上看到這個。 哪個編譯器是“正確的”? 如果這一切你會建議避免這樣的代碼有多強 ...
[英]Using a enum class from a c++ header in a c header
我正在圍繞 c++ 庫編寫一個 c 包裝器。 在 c++ 中有枚舉類用作 function arguments 的類型。如何在 c header 中正確使用主題。 一種丑陋的方法是在 c function 中使用 int,並將包裝器 function 中的主題轉換為枚舉類型。 但這讓 c func ...
[英]extern "C" - before or after library header includes?
我正在編寫一個 C 庫,它可能對編寫 C++ 的人有用。 它有一個標題,如下所示: #ifndef FOO_H_ #define FOO_H_ #include <bar.h> #include <stdarg.h> #include <stddef.h> ...
[英]Resolution of overloaded extern C function with default arguments
這段代碼: 返回42 。 編譯器選擇重載的 C++ function。 我在許多版本的 g++/clang 上對此進行了測試。 我可以依靠這種行為嗎? 它在任何地方都有記錄嗎? Wandbox上的來源 ...
[英]Is it safe to "play" with parameter constness in extern "C" declarations?
假設我正在使用一些具有函數的 C 庫: 而且我知道foo()不會修改str指向的內存。 它只是寫得不好,並沒有費心將str聲明為常量。 現在,在我的 C++ 代碼中,我目前有: 我像這樣使用它: 我的問題:原則上,從語言律師的角度來看,在實踐中,我這樣寫是否安全: 並跳過const ...
[英]Using lambda for callback function as C function parameter
我正在為pthread_*函數編寫自己的std::thread的包裝器(用於教育目的)。 我想出的構造函數如下所示: 我做了一些基本的測試,代碼有效。 但后來我想到 C++ 函數理論上可以有不同於 C 函數的調用約定,並且傳遞start_fn pthread_create指針可以是 UB 線程。 這 ...
[英]Extern used twice in C++
我很好奇鏈接過程中會發生什么,而且,在我在這個領域的研究中,我已經刺穿了這段代碼 該代碼在一些header文件中,包含在一個程序的.c和.cpp源文件中。 它是 function 的聲明,然后在 .cpp 文件中定義。 為什么它有效? 我的意思是,在.cpp 文件的編譯過程中,這將變成 The o ...
[英]Problem with using C code in C++ with extern “C”
我知道當我想在 C++ 中將 C 代碼鏈接為 C 代碼時,我應該使用extern "C" 。 但是使用以下代碼: 我得到這個編譯時錯誤: C4430:缺少類型說明符 - 假定為 int。 注意:C++ 不支持默認整數。 我該如何處理? 我在MS-Windows10上使用MSVC2017 。 編輯: ...
[英]Are extern extern “C”, and extern “C” extern, allowed?
這段代碼是否正確? gcc拒絕1和2作為語法錯誤並接受3. clang接受所有三個但是給出一個重復聲明說明符警告它們全部。 也許相關的是C ++ 17 [dcl.stc] / 5: extern說明符只能應用於變量和函數的名稱。 extern說明符不能用於類成員或函數參 ...
[英]“C linkage function cannot return C++ class” in Visual Studio 2019
我有以下功能: 但是,這不會使用VS2019(但它與gcc一起使用)編譯警告 C連接函數不能返回C ++類 但是,當模板參數是雙精度時它確實有效...我可以返回一個'PyArray1D',沒有VS抱怨。 所以我添加了一個新結構: 並從extern C函數返 ...
[英]Returning unique_ptr from a function executed via dlsym
我有一個位於共享庫中的函數,並從主程序中使用dlsym加載和執行。 (共享對象和主程序都是C ++) 此函數是否可能返回std::unique_ptr ? 共享對象功能- 主程序: ...
[英]Passing a pointer to a function as an argument to a function
只是想知道是否有人可以給我一些有關我在哪里出問題的建議。 如果按原樣運行,我的程序就可以正常運行,但是只要將注釋行與下面的注釋行交換,就會出現錯誤。 我的目標是能夠使用注釋行,因為我想創建一個程序,讓我將指向函數的指針作為另一個函數的參數傳遞,但是到目前為止,我還沒有運氣。 我應該補 ...
[英]To extern “C” or Not to extern “C” [g++ vs cl]
我正在將Numerical Recipes four1.c與Nayuki的FFT進行比較。 兩者都是C版本,但我使用的是C ++驅動程序。 為了進行比較,我正在使用CL.exe和g ++編譯(或更恰當地說,鏈接)到可執行文件中。 兩人似乎都在爭論是否使用extern“C”作為four1功能 ...
[英]Check whether function called through function-pointer has a return statement
我們有一個插件系統,通過將dll / so / dylib傾斜/ LoadLibrary,然后dlsyming / GetProcAddressing函數,然后將該結果存儲在函數指針中來調用dll(用戶生成的插件)中的函數。 不幸的是,由於某些錯誤的示例代碼被復制粘貼,因此其中的某些dll ...
[英]VS2013 C++ Compiler Mangling name defined with extern “C”
我正在嘗試構建一個使用FTDI中當前的2.12.28 ftd2xx.lib靜態庫的WIN32控制台應用程序。 我正在使用VS2013和本機非托管C ++。 我的電話看起來像這樣。 編譯時出現鏈接錯誤 未解析的符號__imp__FT_CreateDeviceInfoList @ ...
[英]Link to Fortran library (Lapack) from C++
我在我的C ++代碼中使用Lapack 。 我很困惑如何正確鏈接到庫。 這是一個與我的代碼調用Lapack函數相對應的小例子: 如果我嘗試使用GCC 4.8.5(Linux openSUSE)編譯它,我會收到以下錯誤: 我明白這是一個名字錯誤的問題。 如果我更改我的代碼在函 ...
[英]Unable to call C++ function from a C code
我是混合C&C ++代碼的新手。 在閱讀了一些SO鏈接和在線閱讀后,了解了extern和__cplusplus指令的必要性。 不知道為什么我得到錯誤。 我錯過了什么 ? C ++標題:cppexh.h C ++來源 C代碼調用C ++函數 但我收到編譯錯誤: ...