我使用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文件,或者它不能用于编译?