我正在尝试运行一个简单的位操作练习来查找 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 projects\homework 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;
}