首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Visual 2013中编译简单C代码

在Visual 2013中编译简单C代码
EN

Stack Overflow用户
提问于 2015-08-04 23:43:02
回答 3查看 511关注 0票数 0

我试图在VS2013中编译一个非常简单的C代码。我之前做了一些谷歌搜索,我意识到我需要遵循某些步骤,例如,在我的项目属性中将编译器从Default更改为Compile As C Code

问题是,当我编译以下代码时:

代码语言:javascript
复制
#include <stdio.h>
main()
{
    printf("Hello World! \n");
    sleep(5);
}

我知道这些错误:

代码语言:javascript
复制
Error   1   error LNK2019: unresolved external symbol _sleep referenced in function _main
Error   2   error LNK1120: 1 unresolved externals

如果我将代码更改为:

代码语言:javascript
复制
#include <stdio.h>
#include <Windows.h>
main()
{
    printf("Hello World! \n");
    Sleep(5000);
}

那它就能正常工作。

如何成功编译第一批代码?我在C中有一些测试代码,我需要使用它们。如果我不能解决上述问题,那么我必须更新所有的语法。

EN

回答 3

Stack Overflow用户

发布于 2015-08-04 23:48:26

睡眠不是C标准函数。

如果您是在UNIX系统上,则包括<unistd.h>。但是,如果您是在windows系统上,则应该使用<windows.h> (这就是为什么您的第二个版本的代码成功编译的原因)。

如果您想在这两个系统中使用,请尝试如下(来自这里):

代码语言:javascript
复制
#ifdef __linux__ 
    //linux include code goes here
#elif _WIN32
    // windows include code goes here
#else

#endif
票数 2
EN

Stack Overflow用户

发布于 2015-08-04 23:45:56

sleep是一个非标准函数:

  • 在UNIX上使用<unistd.h>
  • 在MS上使用<windows.h>

除了编写自己的代码之外,没有其他方法可以解决这一问题:

代码语言:javascript
复制
void sleep (int seconds)
{
    Sleep (seconds * 1000);  // Converting to milliseconds
}
票数 1
EN

Stack Overflow用户

发布于 2015-08-04 23:48:29

<stdio.h>中没有声明睡眠函数。如果您在unix上,请使用unistd.h中的sleep()或Winbase.h (windows.h)中的Sleep()。如果您想了解Sleep()是如何工作的,您可以看到如何在操作系统级别实现睡眠?

如果要在不需要将sleep()更改为Sleep()的情况下执行此操作,则可以使用宏:

#define sleep(s) Sleep((s) * 1000)

宏是不好的,所以您可能不想在生产代码中这样做,但是宏的优点是它将保证内联,这将导致更快的代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31821159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档