C和C++标准都没有指定某些数据类型的确切长度,而仅指定了它们的最小长度。
我有一个第三方库:someLib.lib
(为我的平台编译)及其对应的someLib.h
。假设它包含以下功能:
int getNumber();
void setNumber(int number);
当我编译使用该库的程序时,编译器会使用
someLib.h
中定义的签名检查类型,因此,只要我使用int
,一切都可以正常编译。但是,当我的编译器的
int
比使用编译someLib.lib
的编译器长或短时,会发生什么?链接期间会检测到吗?会导致运行时错误吗?我可以安全地使用someLib.lib
而不知道它是如何编译的吗? 最佳答案
您不应获得编译器或链接器错误,而应仅获得运行时未定义的行为。可能会崩溃,或者如果您很幸运,则结果很奇怪。