在C++代码中使用 K&R 风格的 C 函数

Using K&R-style C functions in C++ code

本文关键字:风格 函数 代码 C++      更新时间:2023-10-16

我试图在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)