问题描述
我有一个C ++程序可以将CFG演示文稿构建为png
文件:
#include <iostream>
#include <array>
#include <string>
#include <cstring>
int partitionFunc(std::string &str,int startInd,int endInd)
{
int primIndex = startInd;
int pivotVal = str[endInd];
for(int i = startInd; i < endInd; i++) {
if(str[i] <= pivotVal) {
char tempIn = str[i];
str[i] = str[primIndex];
str[primIndex] = tempIn;
primIndex++;
}
}
char tempOut = str[primIndex];
str[primIndex] = str[endInd];
str[endInd] = tempOut;
return primIndex;
}
void runQsort(std::string &str,int endIndex)
{
if(startInd < endIndex) {
int primIndex = partitionFunc(str,startInd,endIndex);
runQsort(str,primIndex - 1);
runQsort(str,primIndex,endIndex);
}
}
int main(int argc,char * argv[])
{
std::array<std::string,6> verbs = { "alternative","destination","airlines","turbulence","contribution","ultimate" };
std::string selected;
int option = 14;
int endIndex;
switch (option)
{
case 1:
selected = verbs[0];
break;
case 2:
selected = verbs[1];
break;
case 3:
selected = verbs[2];
break;
case 4:
selected = verbs[3];
break;
case 5:
selected = verbs[4];
break;
default:
selected = verbs[5];
break;
}
runQsort(selected,selected.length() - 1);
int x = 0;
while(x < selected.length()) {
std::cout << selected[x];
x++;
}
std::cout << std::endl;
return 0;
}
要对此进行可视化,我将使用clang++
,llvm
处理整个代码以将源解析为dot
格式:
clang -emit-llvm main.cpp -c -o main.bc
opt --dot-cfg-only main.bc
最后,将执行此命令以将图形视为流程图:
dot -Tpng .main.dot -o main.png
我苦苦挣扎的问题是,在缺少功能和运算符的情况下,输出文件中出现了百分比字符:
仅区分源块中存在的特定块还不够。我会消除那些令人尴尬的字符,因为它们会被放在cpp
文件中的标识符中看到。为此必须添加哪些说明(或者可以建议使用哪些资源来对此主题有所了解)?如果适当地编辑了源代码之后,我可以继续使用clang++/llvm
进行解析。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)