cost 325 ms
在 C++ 中調用 C 文件會出錯

[英]Calling a C file in C++ is giving errors

可重現的錯誤代碼是: 它開始給出錯誤: 如何解決這個問題? 我已將編譯器設置為 C++14 並且我正在使用 Visual Studio 2019。我在主 cpp 文件中調用的非主 cpp 文件中使用它。 我得到的主要錯誤是 malloc 和我注意到的 calloc 。 我也收到 getch() 錯誤 ...

包括 extern c header 導致損壞的預處理器 output

[英]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 模板實例化

[英]extern c template instantiation

我想編寫一個模板函數並在 extern "C" 塊內顯式實例化它以避免代碼重復。 這是我的意思的例子: ...

一個變量的單行外部“C” - 合法嗎?

[英]One-liner extern "C" for a variable - legit?

考慮以下翻譯單元: 我知道對int進行 C 處理並沒有多大意義。 並且int x = 1已經保證了外部鏈接,但這應該可行。 它做了什么; 問題是,GCC 警告使用它,而 clang 沒有:在 GodBolt 上看到這個。 哪個編譯器是“正確的”? 如果這一切你會建議避免這樣的代碼有多強 ...

使用枚舉 class 來自 c++ header 在 c header

[英]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" 聲明中“玩”參數常量是否安全?

[英]Is it safe to "play" with parameter constness in extern "C" declarations?

假設我正在使用一些具有函數的 C 庫: 而且我知道foo()不會修改str指向的內存。 它只是寫得不好,並沒有費心將str聲明為常量。 現在,在我的 C++ 代碼中,我目前有: 我像這樣使用它: 我的問題:原則上,從語言律師的角度來看,在實踐中,我這樣寫是否安全: 並跳過const ...

使用 lambda 進行回調 function 作為 C ZC1C425268E68385D1AB5074F14ZA 參數

[英]Using lambda for callback function as C function parameter

我正在為pthread_*函數編寫自己的std::thread的包裝器(用於教育目的)。 我想出的構造函數如下所示: 我做了一些基本的測試,代碼有效。 但后來我想到 C++ 函數理論上可以有不同於 C 函數的調用約定,並且傳遞start_fn pthread_create指針可以是 UB 線程。 這 ...

Extern 在 C++ 中使用了兩次

[英]Extern used twice in C++

我很好奇鏈接過程中會發生什么,而且,在我在這個領域的研究中,我已經刺穿了這段代碼 該代碼在一些header文件中,包含在一個程序的.c和.cpp源文件中。 它是 function 的聲明,然后在 .cpp 文件中定義。 為什么它有效? 我的意思是,在.cpp 文件的編譯過程中,這將變成 The o ...

在帶有外部“C”的 C++ 中使用 C 代碼時出現問題

[英]Problem with using C code in C++ with extern “C”

我知道當我想在 C++ 中將 C 代碼鏈接為 C 代碼時,我應該使用extern "C" 。 但是使用以下代碼: 我得到這個編譯時錯誤: C4430:缺少類型說明符 - 假定為 int。 注意:C++ 不支持默認整數。 我該如何處理? 我在MS-Windows10上使用MSVC2017 。 編輯: ...

2019-11-10 15:33:42   4   220    c++ / c / extern-c  
允許的是extern extern“C”和extern“C”extern嗎?

[英]Are extern extern “C”, and extern “C” extern, allowed?

這段代碼是否正確? gcc拒絕1和2作為語法錯誤並接受3. clang接受所有三個但是給出一個重復聲明說明符警告它們全部。 也許相關的是C ++ 17 [dcl.stc] / 5: extern說明符只能應用於變量和函數的名稱。 extern說明符不能用於類成員或函數參 ...

Visual Studio 2019中的“C連接函數無法返回C ++類”

[英]“C linkage function cannot return C++ class” in Visual Studio 2019

我有以下功能: 但是,這不會使用VS2019(但它與gcc一起使用)編譯警告 C連接函數不能返回C ++類 但是,當模板參數是雙精度時它確實有效...我可以返回一個'PyArray1D',沒有VS抱怨。 所以我添加了一個新結構: 並從extern C函數返 ...

從通過dlsym執行的函數返回unique_ptr

[英]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”或not extern extern“C”[g ++ vs cl]

[英]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功能 ...

檢查通過函數指針調用的函數是否具有return語句

[英]Check whether function called through function-pointer has a return statement

我們有一個插件系統,通過將dll / so / dylib傾斜/ LoadLibrary,然后dlsyming / GetProcAddressing函數,然后將該結果存儲在函數指針中來調用dll(用戶生成的插件)中的函數。 不幸的是,由於某些錯誤的示例代碼被復制粘貼,因此其中的某些dll ...

用extern“ C”定義的VS2013 C ++編譯器修改名稱

[英]VS2013 C++ Compiler Mangling name defined with extern “C”

我正在嘗試構建一個使用FTDI中當前的2.12.28 ftd2xx.lib靜態庫的WIN32控制台應用程序。 我正在使用VS2013和本機非托管C ++。 我的電話看起來像這樣。 編譯時出現鏈接錯誤 未解析的符號__imp__FT_CreateDeviceInfoList @ ...

從C ++鏈接到Fortran庫(Lapack)

[英]Link to Fortran library (Lapack) from C++

我在我的C ++代碼中使用Lapack 。 我很困惑如何正確鏈接到庫。 這是一個與我的代碼調用Lapack函數相對應的小例子: 如果我嘗試使用GCC 4.8.5(Linux openSUSE)編譯它,我會收到以下錯誤: 我明白這是一個名字錯誤的問題。 如果我更改我的代碼在函 ...

無法從C代碼調用C ++函數

[英]Unable to call C++ function from a C code

我是混合C&C ++代碼的新手。 在閱讀了一些SO鏈接和在線閱讀后,了解了extern和__cplusplus指令的必要性。 不知道為什么我得到錯誤。 我錯過了什么 ? C ++標題:cppexh.h C ++來源 C代碼調用C ++函數 但我收到編譯錯誤: ...


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