c++ - 如果在 C++ 中定义了类型,是否可以在预处理器时检测到?
问题描述
看起来在 GCC 历史的某个点上,类型ulong
被定义为unsigned long long
,但这会在编译器之间造成一些冲突,因为我将项目传递给其他编译器尚未ulong
定义的编译器(如 Visual C++)。这是我想做的一个例子:
#ifndef ulong
typedef unsigned long long ulong;
#endif
但这永远不会奏效,因为这不是有效的方式#ifdef
。你会怎么做?如何以最短的方式做到这一点?
解决方案
对于您的问题,您可以直接编写typedef unsigned long ulong;
而不进行任何预处理,因为您可以重复 typedef(在任何 C++ 中,但如果您使用 C,则只能从 C11 开始)。
我建议根本不要ulong
在你的代码中使用,因为它只是为了与某些系统兼容而提供的,而不是标准的 C 或 C++。unsigned long
更容易理解,写起来也不难
作为参考,它在<sys/types.h>
(asunsigned long
和 not中定义unsigned long long
,但它们可以是相同的大小)
推荐阅读
- amazon-web-services - Designing a User Table with different Identity providers in DynamoDB
- typescript - element.offsetWidth always return 0
- python - PowerShell on MaxOs versionInfo is empty
- angular - How to retain the values selected in a popup when the popup is reloaded again in Angular?
- spring-boot - Waiting for kafka consumer to complete its operations
- express - Reverse Proxy not redirecting node application correctly
- vbscript - How the undo option works on a VBS macro?
- angular - How to use array filter for both parent and child values in angular 11
- docker - Kibana Container Error msg pulling image failed error pull access denied for fxlabs/kibana7 repository does not exist
- vue.js - Cant import package in vue