这是我得到的警告:
passing argument 1 of ‘strtok’ discards ‘const’ qualifier from pointer target
type [enabled by default]
我想禁用此默认操作,任何人都可以帮我这个吗?
谢谢!
答案 0 :(得分:3)
var formData = {
name: 'TestDeck',
description: 'This is a test deck for my api',
private: 'FALSE',
shareable: 'FALSE',
ttsLanguages: [],
blacklistedSideIndices: [],
blacklistedQuestionTypes: [],
gradingModes: [],
imageAttribution: 'https://www.logogarden.com/wp-content/uploads/lg-index/Example-Logo-6.jpg',
imageFile: fs.createReadStream('retext.png')
}
function createDeck(connection) {
request.post({
url: '<url>',
formData: formData
}, function(err, resp, body) {
})
}
就地工作:它需要对传递给它的字符串进行标记。
当然,你可以强迫非常规演员,但这会违反合同。如果调用者希望在您的操作后重新使用传递的字符串,该怎么办?所以这是不行的。
因此,如果您有一些常量字符串,则必须在使用前进行复制,例如使用strtok
strdup
最后,您将所有令牌放在单独的指针中,内存已由char *copy = strdup(my_const_char);
toks = strtok(copy," ",NULL);
...
分配和保留。一旦您不再需要令牌,copy
free
就是您需要清理它的全部内容。
请注意,此const限定符问题的一般答案是:Passing Argument 1 discards qualifiers from pointer target type