我正在尝试运行一个简单的位操作练习来查找Visual Studio 2012中无符号数的高位位置,并且我不断收到这些错误:
错误LNK2019:引用了未解析的外部符号_highBitPostion 在函数_main C:\ Users \ Dalton Pablo \ Desktop \ School \ C539 projects \ homework 4 C539 \ bitfiddling hw4.obj
错误LNK1120:1个未解析的外部C:\ Users \ Dalton Pablo \ Desktop \ School \ C539项目\作业4 C539 \ Debug \ homework 4 C539.exe 1
我在过去遇到过这些错误,但总是最终在实验室中运行我的程序,因为他们的机器不会给我这些问题。我在这个网站上搜索过其他类似的问题来解决问题但收效甚微。
我已经尝试过进入:
属性>配置道具。 >链接器>系统>
然后将子系统更改为Console
我已将我的代码更新为TooTones建议,不幸的是它没有解决问题。如果你看到我的代码导致这些错误,请告诉我。
这是我的上下文代码:
#include <stdio.h>
#include <stdlib.h>
unsigned highBitPosition (unsigned n);
unsigned long long highBitPosition64 (unsigned long long nn);
int main(void){
//unsigned n = 0x0BABE000U;
printf("High Bit Postion 32: ");
printf("%u", highBitPosition(0x0BABE000U));
}
unsigned highBitPosition (unsigned n){
unsigned pos;
for ( pos = 31; pos > 0; pos--){
if(((n >> pos) & 1U) == 1)
return pos;
}
return 0; }
unsigned long long highBitPosition64 (unsigned long long nn){
unsigned hiOrder, lowOrder, bitPos;
if (nn == 0) return 0;
hiOrder = nn >>32;
lowOrder = nn & 0x00000000FFFFFFFFULL;
if( highBitPosition(hiOrder) != 0){
bitPos = highBitPosition(hiOrder) + 32;
}else
bitPos = highBitPosition(lowOrder);
return bitPos;
}
答案 0 :(得分:1)
您的转发声明
unsigned highBitPostion (unsigned n);
与定义
不符unsigned highBitPosition (unsigned n){
角色的字符 声明需要与定义匹配。所以你不能在大写/小写,拼写错误等方面有所区别。这里你在声明中有拼写错误。
因此,链接器正在寻找它无法找到的highBitPostion
的定义,因此它表示缺少highBitPostion
。 (要弄清楚所做的定义的函数highBitPosition
是否应该使用它是不够聪明的!)