Visual Studio 2012 で符号なし数値の上位ビット位置を見つけるために単純なビット操作演習を実行しようとしていますが、次のエラーが発生し続けます。
エラー LNK2019: 関数 _main で参照されている未解決の外部シンボル _highBitPostion 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\宿題 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;
}