标签: preprocessor

我可以测试预处理器指令的值吗?

我有一个未设置的预处理器指令,因此我无法更改它,它要么是 true 要么是 false。

通常我会这样做:

#ifdef DIRECTIVE
// code
#endif
Run Code Online (Sandbox Code Playgroud)

但这将始终运行,因为DIRECTIVE始终已定义。

有没有一种方法可以基本上相当于:

#if DIRECTIVE
#endif
Run Code Online (Sandbox Code Playgroud)

我想我可以做

bool DirectiveValue = DIRECTIVE;
if (DirectiveValue){

}
Run Code Online (Sandbox Code Playgroud)

但我真的希望第二个代码块能够以某种方式实现。

感谢您的任何见解!

c++ preprocessor c-preprocessor

0
推荐指数
1
解决办法
586
查看次数

声明类型别名时,“using”和“#define”之间有区别吗?

我知道使用预处理器指令来缩短与此类似的类型名称:

#define LL long long
Run Code Online (Sandbox Code Playgroud)

然而,我看到有人使用不同的方法:

using LL = long long;
Run Code Online (Sandbox Code Playgroud)

除了语法之外,这两者之间还有什么区别吗?在大多数情况下更推荐哪一种?

c++ preprocessor using

0
推荐指数
1
解决办法
570
查看次数

C#用0定义

我有以下代码:

#define HARDW 671                  // hardware 3 digits
#define FIRMW 013                  // firmware 3 digits
printf("FIRMW %d\r\n", FIRMW);
Run Code Online (Sandbox Code Playgroud)

结果是11而不是13。你有什么解释吗?如何将定义的字段转换为整数?注意我也使用该字段作为字符串,所以我无法删除 0....

最好的问候米奇

c preprocessor

0
推荐指数
1
解决办法
77
查看次数

我可以逃避(抑制)C预处理器宏扩展

我使用了以下代码:

auto t = numeric_limits<decltype(m)>::max() - 1;
Run Code Online (Sandbox Code Playgroud)

后来,我需要#include <Windows.h>哪个#define max(a, b)指令,所以我不能使用::max()方法.有没有办法在::max()不使用时调用时抑制宏扩展#undef max

c++ preprocessor

-1
推荐指数
1
解决办法
84
查看次数

如何将参数传递给函数并在其中的宏函数中使用这些参数

我想做那样的事

#define GREATER_THAN_ZERO(a) a>0? 1:0
Run Code Online (Sandbox Code Playgroud)

并在另一个函数中使用此宏

void test(int x)
{  if (GREATER_THAN_ZERO(x) == 1) printf("more than zero");
   else printf("less than zero");
}
Run Code Online (Sandbox Code Playgroud)

但是当我使用测试功能时,它总是打印"小于零"注意:这是一个不是真实情况的例子,但我想做那样的事情(在函数中使用宏)任何人都可以帮我吗?编辑我有这样的配置文件

 #define LED_u8_MODE_0          LED_u8_REVERSE
 #define LED_u8_MODE_1          LED_u8_NORMAL
Run Code Online (Sandbox Code Playgroud)

在程序中我有一个宏功能

#define LED_u8_GET_MODE(LED_u8_INDX)        (LED_u8_INDX == 0)? LED_u8_MODE_0: \
(LED_u8_INDX == 1)? LED_u8_MODE_1: \
(LED_u8_INDX == 2)? LED_u8_MODE_2: \
(LED_u8_INDX == 3)? LED_u8_MODE_3: 800
Run Code Online (Sandbox Code Playgroud)

然后我在这个函数里面使用它

    void LED_voidSetLedOnWithIndx(u8 Copy_u8LedIndx)
{
    if(LED_u8_GET_MODE(Copy_u8LedIndx) == LED_u8_NORMAL)
    {
        DIO_voidSetPinValue(Copy_u8LedIndx, DIO_u8_HIGH);
    }
    else //if(LED_u8_GET_MODE(Copy_u8LedIndx) == LED_u8_REVERSE)
    {
        DIO_voidSetPinValue(Copy_u8LedIndx, DIO_u8_LOW);
    }
}
Run Code Online (Sandbox Code Playgroud)

c preprocessor c-preprocessor

-2
推荐指数
1
解决办法
61
查看次数

c++,如何在代码中获取解决方案目录

我正在为返回其完整路径的 dll 函数编写单元测试。测试项目和dll项目都在同一个解决方案中。

我正在考虑获取解决方案目录并将路径的其余部分附加到断言。

在测试项目的预处理器定义中定义:_SOLUTIONDIR=$(SolutionDir);

但在测试文件中我得到#define _SOLUTIONDIR C:\*\Project\ expands to C:\*\Project\ unrecognized token

我应该如何将其转换或转换为字符串?或者一般来说获得相对路径的最佳方法是什么?

dll file has function returning 
--------------------------------
 EXTERN_C IMAGE_DOS_HEADER __ImageBase;
LPTSTR  strDLLPath1 = new TCHAR[_MAX_PATH];
        ::GetModuleFileName((HINSTANCE)&__ImageBase, strDLLPath1, _MAX_PATH);
        wstring temp1(strDLLPath1);
        string temp2(temp1.begin(), temp1.end());
return temp2;
Run Code Online (Sandbox Code Playgroud)

c++ macros preprocessor visual-c++

-2
推荐指数
1
解决办法
2921
查看次数

是否可以根据 C 中的参数在编译时更改 #define 的行为?

有这个代码:

// Called when x is "a"
#define do(x) doA()

// Called when x is "b"
#define do(x) doB()
Run Code Online (Sandbox Code Playgroud)

是否可以使预处理器解释do("a")doA()do("b")asdoB()以及其他doUndefined()(如果提供未知)x?澄清一下:我想将x参数映射到任意代码或函数调用,而不仅仅是 call do{uppercase_x}()。它必须在编译时完成。并且x参数必须是字符串。

谢谢!

c preprocessor compile-time c-preprocessor

-2
推荐指数
1
解决办法
125
查看次数

Spark-Scala中的文本预处理

我想对Spark-Scala中的大量文本数据应用预处理阶段,例如Lemmatization - Remove Stop Words(使用Tf-Idf) - POS标记,有什么方法可以在Spark中实现它们 - Scala?

例如,这是我的数据的一个示例:

The perfect fit for my iPod photo. Great sound for a great price. I use it everywhere. it is very usefulness for me.
Run Code Online (Sandbox Code Playgroud)

预处理后:

perfect fit iPod photo great sound great price use everywhere very useful
Run Code Online (Sandbox Code Playgroud)

他们有POS标签,例如 (iPod,NN) (photo,NN)

有一个POS标签(sister.arizona)是否适用于Spark?

text preprocessor scala text-mining apache-spark

-3
推荐指数
1
解决办法
5153
查看次数