KnapSack Branch&绑定奇怪的编译错误

时间:2014-03-18 17:28:02

标签: c algorithm compilation compiler-errors knapsack-problem

所以我正在使用Branch and Bound算法来实现KnapSack问题。我已经完成了它,但是我得到了一些奇怪的编译错误,我不知道如何修复:

编译错误

gcc -Wall -pedantic -g -std=c99   -c -o bnb.o bnb.c
bnb.c: In function ‘branch_and_bound’:
bnb.c:225: warning: cast from pointer to integer of different size
bnb.c:229: warning: implicit declaration of function ‘copy_string’
bnb.c:248: warning: cast from pointer to integer of different size
bnb.c:251: error: ‘struc_sol’ has no member named ‘string’
bnb.c:260: error: ‘struc_sol’ has no member named ‘string’
bnb.c:260: warning: cast from pointer to integer of different size
bnb.c:263: error: ‘struc_sol’ has no member named ‘string’
make: *** [bnb.o] Error 1

有关我做错的任何建议吗?

1 个答案:

答案 0 :(得分:1)

  

bnb.c:225:警告:从指针强制转换为不同大小的整数

这是从以下行:

     topNode->solution_vec[i] = (int)malloc(sizeof(int));

正如所提到的消息一样,malloc()返回一个指针。你不应该把它转换成整数。实际上,您根本不需要为solution_vec[i]分配内存,因为它已经由早先分配的topNode分配。


  

bnb.c:229:警告:隐式声明函数'copy_string'

检查头文件中是否声明了copy_string()


  

bnb.c:251:错误:'struc_sol'没有名为'string'的成员

就像它提到的那样,struc_sol没有名为string的成员,因此child1Node->string会导致语法错误。