具有已定义宏的 iOS 预处理条件会导致"token is not valid"
iOS preprocessing conditional with defined macros causes "token is not valid"
我有一个以consts形式编写尺寸的类,用于我的应用中使用的所有UI元素。突然我注意到在iphone 6和4上看起来有所不同,所以我需要稍微调整数字。但是,当我想使用条件来检测设备并为常量分配正确的值时,它会给我"令牌在预处理子表达式中不是有效的二进制运算符"。下列代码:
#import <UIKit/UIKit.h>
#import "UIStyles.h"
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#define IS_RETINA ([[UIScreen mainScreen] scale] >= 2.0)
#define SCREEN_WIDTH ([[UIScreen mainScreen] bounds].size.width)
#define SCREEN_HEIGHT ([[UIScreen mainScreen] bounds].size.height)
#define SCREEN_MAX_LENGTH (MAX(SCREEN_WIDTH, SCREEN_HEIGHT))
#define SCREEN_MIN_LENGTH (MIN(SCREEN_WIDTH, SCREEN_HEIGHT))
#define IS_IPHONE_4_OR_LESS (IS_IPHONE && SCREEN_MAX_LENGTH < 568.0)
#define IS_IPHONE_5 (IS_IPHONE && SCREEN_MAX_LENGTH == 568.0)
#define IS_IPHONE_6 (IS_IPHONE && SCREEN_MAX_LENGTH == 667.0)
#define IS_IPHONE_6P (IS_IPHONE && SCREEN_MAX_LENGTH == 736.0)
@implementation UIStyles
#if (IS_IPHONE_4_OR_LESS)
const int BOTTOM_BTN_HEIGHT = 40;
const int PRICE_AND_LOCATION_BAR_HEIGHT = 40;
#else
const int BOTTOM_BTN_HEIGHT = 50;
const int PRICE_AND_LOCATION_BAR_HEIGHT = 50;
#endif
@end
试试下面的方法…
#if defined(IS_IPHONE_6)
const int BOTTOM_BTN_HEIGHT = 40;
const int PRICE_AND_LOCATION_BAR_HEIGHT = 40;
#else
const int BOTTOM_BTN_HEIGHT = 50;
const int PRICE_AND_LOCATION_BAR_HEIGHT = 50;
#endif
在外面,你可以这样做:
NSLog(@"Botton Height : %d",IS_IPHONE_6);
我认为您应该为这些设备单独创建一个函数。似乎你的编译器不能调用[[uisscreen mainScreen] bounds].size。预处理宽度)。
相关文章:
- Why is UINT32_MAX + 1 = 0?
- C++错误:"error: int aaa::bbb is protected within this context"
- 创建具有 new in 函数和"this is nullptr"异常的对象
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- Is !NaN not a NaN?
- Directx 11 - CompileFromFile() is not compiling
- Centos7 g++ "to_string is not in a member of std"
- Arduino无法编译名为SP:"Expected ')' before '(' token"的变量
- "Unable to start debugging. No process is associated with this object." - 在Visual Studio Code中使用GDB
- 为什么我的功能在使用 goto 时会给我带来"expected primary-expression before '}' token"?
- Where is std::hardware_destructive_interference_size?
- 将成员函数作为构造函数参数调用时出错 "Variable is not a type name"
- What is unordered_set in C++
- 你如何理解"std: :forward is just syntactic sugar"?这是真的吗?
- C++ "error: use of overloaded operator '*' is ambiguous"似乎只有一场比赛
- 使用多个文件时"array bound is not an integer constant before ']' token"
- 为什么海湾合作委员会说"a function-definition is not allowed here before '{' token"?
- 获取错误"array bound is not an integer constant before ']' token"
- 具有已定义宏的 iOS 预处理条件会导致"token is not valid"
- 错误"token is not a valid binary operator in a preprocessor subexpression"