在c++
當我嘗試編譯下面的代碼,我收到了相互矛盾的聲明錯誤:重新定義UINT鍵入C++
#include <iostream>
using namespace std;
typedef uint_least64_t uint;
int main() {
uint i = -1;
cout << i << endl;
}
錯誤:
main.cpp:5:24: error: conflicting declaration ‘typedef uint_least64_t uint’
typedef uint_least64_t uint;
^~~~
In file included from /usr/include/stdlib.h:275:0,
from /usr/include/c++/6/cstdlib:75,
from /usr/include/c++/6/ext/string_conversions.h:41,
from /usr/include/c++/6/bits/basic_string.h:5417,
from /usr/include/c++/6/string:52,
from /usr/include/c++/6/bits/locale_classes.h:40,
from /usr/include/c++/6/bits/ios_base.h:41,
from /usr/include/c++/6/ios:42,
from /usr/include/c++/6/ostream:38,
from /usr/include/c++/6/iostream:39,
from main.cpp:1:
/usr/include/x86_64-linux-gnu/sys/types.h:152:22: note: previous declaration as ‘typedef unsigned int uint’
typedef unsigned int uint;
^~~~
我認爲衝突的聲明錯誤是因爲類型關於uint
的聲明已經存在於某種語言中,並且我認爲該類型爲uint_least32_t
,因爲:
#include <iostream>
using namespace std;
int main() {
uint i = -1;
cout << i << endl;
}
返回(2^32)-1的整數值。因此在c++
中有可能將uint
重新定義爲uint_least64_t
。
顯示其餘的代碼。 – melpomene
問題已編輯。請讓我知道是否有任何其他您需要的信息。 – Sajeeb