错误LNK2019和LNK1120错误

时间:2013-04-27 18:49:24

标签: linker-errors

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

1 个答案:

答案 0 :(得分:1)

您的转发声明

unsigned highBitPostion (unsigned n);

定义

不符
unsigned highBitPosition (unsigned n){

角色的字符 声明需要与定义匹配。所以你不能在大写/小写,拼写错误等方面有所区别。这里你在声明中有拼写错误。

因此,链接器正在寻找它无法找到的highBitPostion的定义,因此它表示缺少highBitPostion。 (要弄清楚所做的定义的函数highBitPosition是否应该使用它是不够聪明的!)