下午好,
我的任务是实现似乎是在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。是否有可能允许这种函数声明的选项?
谢谢,
答案 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
{
// ...
}