簡體   English   中英

在C ++代碼中使用K&R風格的C函數

[英]Using K&R-style C functions in C++ code

我正在嘗試在VS2010的VC ++項目中使用oncrpc-windows項目。 oncrpc導出svc.h文件中沒有任何參數的函數,但實際上函數有參數。 例如,頭文件導出

#define DllExport   __declspec( dllexport ) 
...
DllExport SVCXPRT *svcudp_create();

實現文件包含

SVCXPRT * svcudp_create(sock)
    int sock;
{

    return(svcudp_bufcreate(sock, UDPMSGSIZE, UDPMSGSIZE));
}

如果我嘗試創建使用導出函數的C文件,那么一切正常,代碼編譯成功。 問題是我無法在CPP代碼中使用導出的函數,編譯器會停止並顯示以下消息

錯誤C2660:'svcudp_create':函數不帶1個參數

我試圖使用extern "C" ,但它沒有幫助。 我想知道如何在VC ++項目中使用導出的函數? 是否真的需要使用正確的簽名編寫自己的頭文件?

在編譯.cc或.cpp文件之前,您需要編譯任何使用K&R樣式語法的.c文件到目標文件。 這應該在MakeFile中完成。

例:

PNAME = "ProjectName"
PROGRAM_FILES = program.cpp program.h

svc.o: svc.c svc.h
    gcc -c $< -o $@
program.o: $(PROGRAM_FILES)
    gcc -c $< -o $@
all: svc.o program.o
    gcc $< -o $(PNAME)
clean:
    -rm -f *.o $(PNAME)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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