69,382
社区成员
发帖
与我相关
我的任务
分享
if(false)
#define VER
else
#define HOR //这样不行
#ifdef VER
// 很多代码
#endif
#fidef HOR //因为一些原因,这里无法使用if-else的语句来实现这个功能
//更多的代码
#endif
#if OS == QType::Window
然后编译的时候说
error: token "::" is not valid in preprocessor expressions
是不是预编译里不能包含:: 这个符号?[/quote]
在C语言里没有遇到过这个符号,C++会有。#if OS == QType::Window
然后编译的时候说
error: token "::" is not valid in preprocessor expressions
是不是预编译里不能包含:: 这个符号?#include <stdio.h>
int main(void)
{
int flag = 0;
#if flag == 1
#define VAR
#else
#define HOR
#endif
#ifdef VAR
printf("Hello!\n");
#else
printf("World\n");
#endif
return 0;
}
#ifden Q_OS_WINDOW
//调用window的api函数修改系统时间
#endif
#ifdef Q_OS LINUX
//调用linux的api函数修改系统时间
#endif
这样代码就可以不做修改在不同的系统上编译,运行时调用对应的系统api函数,但这里问题是他的这两个宏是怎么定义的?
是在前面的代码里有
if(/*判断操作系统类型函数*/ == Window)
#define Q_OS_WINDOW
if(/*判断操作系统类型函数*/ == Linux)
#define Q_OS_LINUX
他是用这样的形式么?我现在遇到到类似的情况,我就不知道这两个红Q_OS_WINDOW和Q_OS_LINUX他是通过什么方式定义的?