为什么我的编译器(GCC)没有隐式地转换char**为const char**?
以下代码:
#include <iostream>
void print(const char** thing) {
std::cout << thing[0] << std::endl;
}
int main(int argc, char** argv) {
print(argv);
}
Run Code Online (Sandbox Code Playgroud)
给出以下错误:
oi.cpp: In function ‘int main(int, char**)’:
oi.cpp:8:12: error: invalid conversion from ‘char**’ to ‘const char**’ [-fpermissive]
oi.cpp:3:6: error: initializing argument 1 of ‘void print(const char**)’ [-fpermissive]
Run Code Online (Sandbox Code Playgroud) 这就是我想要做的事情:
const int64_t randomIntNumber = reinterpret_cast<int64_t> (randomUintNumber);
randomUintNumber的类型uint64_t.
错误是(MSVC 2010):
错误C2440:'reinterpret_cast':无法从'const uint64_t'转换为'int64_t'1>转换是一种有效的标准转换,可以隐式执行,也可以使用static_cast,C风格的转换或函数式转换
为什么不编译?两种类型都有相同的位长,是不是reinterpret_cast用于什么?