C++ Visual Studio中不带参数名的函数原型和不带数据类型的函数声明
下午好 我的任务是在VisualStudio2010中实现似乎是为C99编写的代码。我已经研究了许多C99/Visual Studio兼容性线程,但没有发现任何与修复问题相关的内容 基本上,我必须移植的代码具有以下方式编写的函数原型和声明:C++ Visual Studio中不带参数名的函数原型和不带数据类型的函数声明,c++,visual-studio-2010,function-prototypes,C++,Visual Studio 2010,Function Prototypes,下午好 我的任务是在VisualStudio2010中实现似乎是为C99编写的代码。我已经研究了许多C99/Visual Studio兼容性线程,但没有发现任何与修复问题相关的内容 基本上,我必须移植的代码具有以下方式编写的函数原型和声明: void myfunc(int, char*); //Prototype void myfunc(variable1, pointer1) //Declaration { ;//... } 但VisualStudio2010只愿意接受 void m
void myfunc(int, char*); //Prototype
void myfunc(variable1, pointer1) //Declaration
{
;//...
}
但VisualStudio2010只愿意接受
void myfunc(int variable1, char* pointer1); //Prototype
void myfunc(int variable1, char* pointer1) //Declaration
{
;//...
}
我不能100%确定这是否是C99兼容性问题或某些过时的编码实践,但源文件正在由第三方不断更新,我需要避免更改其中的任何内容(例如重命名每个函数),由于有一个插件编译器,我也需要使用VisualStudio2010。是否有允许这种类型的函数声明的选项
谢谢,据我所知,MS VC++不支持C99 至于函数定义thsi定义
void myfunc(variable1, pointer1) //Declaration
{
;//...
}
即使对于C89也是无效的。在这个标题之后
void myfunc(variable1, pointer1)
在开口支撑之前,应进行标识符声明。
如果存在这些声明,并且您只是输入了一个拼写错误,那么您可以使用MS VC++2010。但是您必须将代码编译为C代码
根据C标准
6如果声明器包含标识符列表,则
声明列表应至少有一个声明人
声明人应仅声明标识符列表中的标识符,
应声明标识符列表中的每个标识符。一
声明为typedef名称的标识符不得重新声明为
参数声明清单中的声明不得包含任何内容
除寄存器之外的存储类说明符,不进行初始化
<>这是C和C++的区别。
实际上,在C++中,请参阅下面的修正注释:
void myfunc(int variable1, char* pointer1); // Declaration
void myfunc(int variable1, char* pointer1) // Definition
{
// ...
}
我知道你说的是老式的C语法。不,没有标识符声明。否则,代码应该在Linux中的Eclipse下编译。@user2056201我添加了一段来自C标准的引用。看起来你的代码很旧。