为什么我收到错误:'strcmp':找不到标识符(visual studio 2010)

Yos*_*sef 9 c

为什么我会收到错误:'strcmp':在visual studio 2010 C++ Express中找不到标识符

#include <string.h>
#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
    printf("%d",(int)strcmp( "str1", "str2" ));

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

谢谢

Han*_*ant 19

:( #include <string.h> :(
#include "stdafx.h"
Run Code Online (Sandbox Code Playgroud)

有趣的MSVC编译器的怪癖,它编译它时会产生完全相同的错误.是的,不是很多"有趣".它会跳过所有内容来查找stdafx.h预编译头包含指令.string.h实际上并未包括在内.固定:

#include "stdafx.h"
#include <string.h>
Run Code Online (Sandbox Code Playgroud)

始终把stdafx.h包括在内.

  • 这很可能是我从编译器中听到的最荒谬的行为.WTF (6认同)
  • @pmg:是的,如果你选择的话,你可以做剑斗士的事情.如果您之前从未尝试过,那么以正确的方式完成预编译的标题只是您生命中的几秒而不是几分钟. (3认同)
  • Visual C++也应该发出1级警告:"警告C4627:'#include <string.h>':在查找预编译的头文件时跳过." 如果忽略该警告,则是,这可能被视为"WTF"编译器行为. (3认同)
  • 接得好.编译器应该警告你这件事. (2认同)
  • "指出他们违反的C或C++标准格言是多么棘手." 也许我错过了什么,但他们怎么能不违反标准?例如C99标准的"6.10.2源文件包含". (2认同)
  • @Roman Cheplyaka:MSVC甚至不*尝试*符合C99标准.源文件包含是其中最少的问题. (2认同)