有沒有辦法從Fortran聲明C可變參數函數? 我需要調用此函數來計算用字符串標記的向量之間的點積。 我的想法是聲明如下所示,其中變量列表包含字符串文字。如果參數的變量列表爲空,那麼我將在標準標籤中進行查找並執行計算。如果用戶指定兩個標籤,我想找回這兩個向量,並得到他們的點積:C可變參數函數和Fortran的互操作性
extern "C" void compute_dot_product(double * dot_product, ...)
{
va_list args;
va_start(args, NULL);
char * label1 = va_arg(args, char *);
if (!label1)
{
// Do standard label lookup and compute dot product
}
else
{
// Compute dot product between the vectors with the specified labels
char * label2 = va_arg(args, char *);
}
va_end(args);
}
唯一的問題是,我可以編譯我的C庫,並將其鏈接到一個Fortran可執行文件,但我得到一個運行時錯誤當我嘗試訪問變量列表的參數。 任何想法,如果我想要做什麼是可能的? 然後,可能的解決方案是將其分解爲兩個函數:一個執行標準標籤查找(0參數大小寫),另一個處理非標準標籤查找(2個參數大小寫)。我寧願避免這個解決方案。
它需要在兩邊聲明爲cdecl。你的運行時錯誤可能是因爲一方是stdcall而另一方是cdecl。 – cup