功能仅声明,但仍然有效

时间:2014-01-22 10:16:28

标签: c++ c

我正在使用此函数,该函数仅在任何地方声明且未定义。但是程序仍然可以在C中正常工作,但在C ++中却没有。这怎么可能。

void pzKasittelija(char *lid, char *lid2); // this function is only declared not defined anywhere 

PS:我检查了所有的libs和头文件,该函数未定义!!!

这是我使用C ++获得的错误消息

  

错误2错误C2440:'=':无法从'void(__ cdecl *)(char *,char *)'转换为'void(__ cdecl *)(...)'

请查看这些链接。这些是问题所在的文件。

https://drive.google.com/file/d/0B2hZqiBoBiNEcVFUTFJyZUZvY1U/edit?usp=sharing

https://drive.google.com/file/d/0B2hZqiBoBiNEZWl6VzR4bzFHWm8/edit?usp=sharing

3 个答案:

答案 0 :(得分:0)

由于这只是function prototype,它只是通知编译器在代码中将使用这样的函数。通过使用函数原型,您可以在调用代码之后定义函数。

当您包含标题时,在.h文件中包含多个函数的原型,编译器不希望您调用所有函数

答案 1 :(得分:0)

你的程序没有编译错误,因为它是一个void函数,所以它所做的一切都没有。如果程序按预期运行,则表示您可以安全地删除该功能。

答案 2 :(得分:0)

如果代码是为bcc32和VC ++ C编译器编写的,因此在C ++下编译可能不完全相同,因为C ++对转换类型有更严格的规则。 C只会让它发生,C ++希望你让它明确。