它不喜欢的这个简单的代码的第2行:不能找出什么是错的:“之前的预期主表达式‘)’标记”
string str = "Jamin rules";
string str2(str.length()*charbits, '0');
的错误是
error: expected primary-expression before ')' token
compilation terminated due to -Wfatal-errors.
只要你知道,
charbits
是我通过
定义的变量#define charbits 8*sizeof(char);
我认为这是问题,因为代码的工作,当我在
string str2(str.length()*8, '0');
,而不是类型。请给我一些洞察这个细微差别。
'#define'不是一个变量它是一个替代宏,编译器不需要对宏进行常量折叠 – Mgetz
避免宏如鼠疫...... –
另外,你应该知道你的'charbits'赢得'给你一个'char'中的位数。 sizeof(char)'在任何平台上总是为1。要获得'char'中的位数,可以包含'climits'并使用'CHAR_BIT'宏。 – zindorsky