【发布时间】:2018-12-03 02:41:06
【问题描述】:
当我尝试在 Visual Studio 2017 上使用默认 C/C++ 设置编译以下 C 代码时:
#include <stdio.h>
#include <stdlib.h>
/* function declaration */
/*Line 6*/ int max(int num1, int num2, int num3);
int main() {
/* local variable definition */
int a = 100;
int b = 200;
int c = 400;
int ret;
/* calling a function to get max value */
ret = max(a, b, c);
printf("Max value is : %d\n", ret);
return 0;
}
/* function returning the max between two numbers */
/*Line 25*/ int max(int num1, int num2, int num3) {
/* local variable declaration */
int result;
if (num1 > num2)
result = num1;
else
result = num3;
return result;
}
我收到错误:
需要一个标识符:第 6,25 行
应为“;”:第 25 行
Intellisense 会突出显示这些行,并且不会让我运行代码。然而在 Codeblocks(使用来自 mingW 的默认 GNU GCC 编译器)中,这个 EXACT 代码编译得很好。这是什么原因造成的?
多个消息来源告诉我,这不是由于 Codeblocks 使用 GCC 编译器 和 Visual Studio 默认使用“cl”编译器。
同样的消息来源告诉我,这也不是因为每个 IDE 都可能使用不同的 C 标准编译代码。
我已将文件扩展名命名为“.c”,但出现这些错误
如果我尝试将代码编译为 c++(或“.c++”文件,它可以工作,但这不是我想要的。 我要C。
我更喜欢使用 Visual Studio 而不是 Codeblocks,因为它具有时尚的外观和菜单布局。我也更喜欢 Visual Studio 调试器。
我可以采取哪些步骤在 Visual Studio 2017 上成功编译此简单代码?
【问题讨论】:
-
对于 C 程序,它至少应该是
int main(void)。 -
@Chris - 与您的问题无关,但您可能希望添加一个测试用例,以使
num2成为最大数字。喜欢max(1, 2, 1);。 -
@alk,为什么? “如果没有给出参数,则函数不接受任何参数,应使用 空括号集 或关键字 void 来定义。” www-s.acm.illinois.edu/webmonkeys/book/c_guide/1.3.html
-
@purce:在 C 中,“一个空的括号集”不定义了一个空的参数列表。这只是 C 和 C++ 之间的本质区别。不幸的是,您链接的文档在这里似乎不准确(不要说错)。
-
如何将任何东西传递给 main()?
标签: c++ c visual-studio visual-studio-2017 codeblocks