Visual Studio 2010汇编程序列表

时间:2015-02-23 12:27:11

标签: visual-studio-2010 assembly

我使用VS2010生成汇编程序列表。比我创建一个新项目,添加生成的* .asm文件并尝试编译它。在编译期间,我收到了一些错误:

main.asm(54): error A2008: syntax error : lambda0

在这行生成的asm:

PUBLIC  ??R<lambda0>@?A0x1262112e@@QBE_NH@Z     ; `anonymous namespace'::<lambda0>::operator()

另一个是:

main.asm(72): error A2039: line too long

第72行的长度为538个符号。

看起来Visual Studio会为lambda表达式生成一个不兼容的asm代码。

我用于测试的下一个C ++代码:

 #include <iostream>
 #include <fstream>
 #include <string>
 #include <algorithm>
 #include <cctype>

 std::string LTrimString(std::string s)
 {
      s.erase(s.begin(), std::find_if(s.begin(), s.end(), [](int ch) {                     return !std::isspace((unsigned char)ch); }));
      return s;
 }

 std::string RTrimString(std::string s)
 {
    s.erase(std::find_if(s.rbegin(), s.rend(), [](int ch) { return !std::isspace((unsigned char)ch); }).base(), s.end());
    return s;
 }

 std::string TrimString(std::string s)
 {
    return LTrimString(RTrimString(s));
 }

 bool StartsWith(std::string full_str, std::string start_str)
 {
    return full_str.substr(0, start_str.length()) == start_str;
 }

 int main()
 {
    std::ifstream ifs("test.txt");
     while(ifs)
     {
         std::string line;
         std::getline(ifs, line);

        if(StartsWith(TrimString(line), ">>>"))
            std::cout << "###";

         std::cout << line << '\n';
     }
 }

问题是:是否可以在visual studio中为编译生成正确的asm文件,或者它不能用于编译?

0 个答案:

没有答案