我在linux上的vmPlayer中处理flex(.lex文件),我想将sass代码转换为css代码。 我想使用char数组的映射,以将sass中的变量与其值匹配。出于某种原因,我无法在地图中插入值。
%{
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <map>
#include<iostream>
std::map<char[20], char[20]> dictionary; //MY DICTIONARY,GOOD
%}
%%
s dictionary.insert(std::pair<char[20], char[20]>("bb", "TTTT")); //PROBLEM
%%
它不编译并给我错误:
hello.lex:30:84: error: no matching function for call to ‘std::pair<char
[20], char [20]>::pair(const char [3], const char [5])’
ine(toReturn); dictionary.insert(std::pair<char[20], char[20]>("bb",
"TTTT"));
一般来说,我不确定我可以在flex上轻松使用哪些 C 库,哪些库使用flex更加可疑。 有语法问题吗?
答案 0 :(得分:3)
生成的C ++代码中的问题是pair(const char [3], const char [5])
(这是常量字符串的大小)与pair(const char [20], const char [20])
无关。它只是不是相同的类型。
3个解决方案:
char []
std::string
类型,它在其构造函数中接受char数组。%{
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <map>
#include<iostream>
std::map<std::string, std::string> dictionary; //MY DICTIONARY,GOOD
%}
%%
s dictionary.insert(std::pair<std::string, std::string>("bb", "TTTT"));
%%