C89
long long
中不存在(已在C99
中添加)C++03
{和C++98
)long long
不存在(已添加到C++11
)现在如果我编译它:
typedef long long myType;
int main()
{
myType a;
}
使用(g++ sourceFile.cpp -std=c++03 -pedantic
或gcc sourceFile.c -std=c89 -pedantic
)它会发出警告,表示当前选择的标准不支持long long
但是,如果我编译它(使用相同的标志):
#include <stdint.h> //in case of C
#include <cstdint> //in case of C++
int main()
{
int64_t a;
}
即使stdint.h
(cstdint
只包含stdint.h
并在std
内显示名称)包含
...
typedef long long int64_t;
...
我想知道这是如何工作的。
答案 0 :(得分:12)
即使stdint.h ......我也不会收到任何警告。
这是因为默认情况下,GCC不会为系统标头生成警告。您可以通过命令行选项private void getPrice(String pce) {
Arrays.sort(products);
int searchProductArray = Arrays.binarySearch(products, pce);
if (searchProductArray >= 0) {
price = prices[searchProductArray];
productName = products [searchProductArray];
// isValidOrder = true;
}
else {
price = 0.0;
isValidOrder = false;
message = "**ERROR**: Invalid product name";
}
}
...