没有参数名称和函数声明的函数原型,没有Visual Studio中的数据类型

时间:2014-01-10 00:17:18

标签: c++ visual-studio-2010 function-prototypes

下午好,

我的任务是实现似乎是在Visual Studio 2010中为C99编写的代码。我研究了很多C99 / Visual Studio兼容性线程,但我没有找到任何与修复我的问题相关的内容。 / p>

基本上,我必须移植的代码具有以下列方式编写的函数原型和声明:

void myfunc(int, char*); //Prototype

void myfunc(variable1, pointer1) //Declaration
{
   ;//...
}

但Visual Studio 2010只愿意接受

void myfunc(int variable1, char* pointer1); //Prototype

void myfunc(int variable1, char* pointer1) //Declaration
{
   ;//...
}

我不是100%确定这是否是一个C99兼容性问题或一些过时的编码实践,但源文件正在由第三方进行常规更新,并且我要求避免更改其中的任何内容(例如作为重命名每个单一功能),由于插件编译器,我也需要使用visual studio 2010。是否有可能允许这种函数声明的选项?

谢谢,

2 个答案:

答案 0 :(得分:0)

据我所知,MS VC ++不支持C99。

关于函数定义thsi定义

void myfunc(variable1, pointer1) //Declaration
{
   ;//...
}
即使是C89,

也无效。在此标题之后

void myfunc(variable1, pointer1)

在开头括号之前应该有标识符声明。 如果这些声明存在并且您只是一个拼写错误,那么您可以使用MS VC ++ 2010.但是您必须将代码编译为C代码。

根据C标准

  

6如果声明者包含一个标识符列表,则每个声明都在   声明清单应至少有一个声明者   声明者只应声明标识符列表中的标识符,   并且应声明标识符列表中的每个标识符。一个   声明为typedef名称的标识符不得重新声明为   参数。声明清单中的声明应包含否   除寄存器和没有初始化之外的存储类说明符。

答案 1 :(得分:0)

这是C和C ++之间的区别。

事实上,在C ++中,请参阅下面的更正注释:

void myfunc(int variable1, char* pointer1); // Declaration

void myfunc(int variable1, char* pointer1)  // Definition
{
   // ...
}