我有一个未设置的预处理器指令,因此我无法更改它,它要么是 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)
但我真的希望第二个代码块能够以某种方式实现。
感谢您的任何见解!
我知道使用预处理器指令来缩短与此类似的类型名称:
#define LL long long
Run Code Online (Sandbox Code Playgroud)
然而,我看到有人使用不同的方法:
using LL = long long;
Run Code Online (Sandbox Code Playgroud)
除了语法之外,这两者之间还有什么区别吗?在大多数情况下更推荐哪一种?
我有以下代码:
#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....
最好的问候米奇
我使用了以下代码:
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?
我想做那样的事
#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) 我正在为返回其完整路径的 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) 有这个代码:
// 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参数必须是字符串。
谢谢!
我想对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?
preprocessor ×8
c++ ×4
c ×3
apache-spark ×1
compile-time ×1
macros ×1
scala ×1
text ×1
text-mining ×1
using ×1
visual-c++ ×1