#define TML_ID
- 没有值分配给TML_ID。编译或构建可执行文件没有问题。这是否会将任何默认值(如null)分配给TML_ID或将TML_ID视为未定义?如果#define在没有赋值的情况下使用,它会做什么?
0
A
回答
4
0
0
没有分配一个值,以这种方式的宏通常用于防止包括相同h文件多次,这样:
#ifndef _FILENAME
#define _FILENAME
//declaration code
#endif
如果某些cpp文件包括,例如,两个不同的.h文件,它们都包含我们的.h文件,那么.cpp将只有一个声明代码副本,因为第二次_FILENAME宏将被定义,并且声明代码将被跳过。
+0
以下划线开头并以大写字母('_FILENAME')开头的名称和包含两个连续下划线的名称保留供实施使用。不要在你的代码中使用它们。 –
0
#define MACRO
定义了一个名为MACRO的宏。它没有内容,所以如果你写了类似std::cout << MACRO
的东西,你会得到一个错误,因为那里什么都没有。这通常用于有条件地使用新的关键字:
#if CPP_VERSION_C11
#define NOEXCEPT noexcept
#else
#define NOEXCEPT
#endif
void f() NOEXCEPT {
// whatever
}
还有两种其他方式可以使用这样的宏。您可以检查它是否是定义:
#ifdef MACRO
// code for one branch
#else
// code for other branch
#endif
对于代码,因为MACRO
已定义,预处理器将着眼于在第一分支代码,并跳过代码在第二分支。如果MACRO
尚未定义,它将跳过第一个分支中的代码而不是第二个分支中的代码。你也可以做同样的事情是这样的:
#if defined(MACRO)
,或者你可以在预处理器指令使用的常量表达式:
#if MACRO
// code for one branch
#else
// code for other branch
#endif
这里,MACRO
得到值0,则#if
看到值0,并且预处理器跳过第一个分支。同样的事情发生在更复杂的表达式:
#if MACRO + 1 > 0
// code for one branch
#else
// code for other branch
#endif
这里,MACRO
的值为0,MACRO + 1
具有值1,并且第一分支将被选择。
相关问题
- 1. 什么是Ext.Component.initialConfig,它做了什么,以及在什么情况下使用它?
- 2. 什么git暗藏保存做git隐藏不会做,并在什么情况下你会使用它?
- 3. 什么是光标,它在做什么(在这种情况下)?
- 4. 什么情况下**会有用?
- 5. 如果不是在多种情况下没有什么
- 6. 我可以做什么没有意图或在某些情况下,我必然会使用它们吗?
- 7. 在没有FPU的情况下浮点数会发生什么?
- 8. 为什么mysql分区在我的情况下没有效果
- 9. “:”在这种情况下做什么?
- 10. sched_yield在这种情况下做什么?
- 11. *在这种情况下做什么?:
- 12. .map()在这种情况下做什么?
- 13. 如果没有SD卡,会发生什么情况?
- 14. Spring Roo - 如何在没有AspectJ的情况下使用它?
- 15. 在什么情况下做dispatch_async(dispatch_get_main_queue(),^ ...什么都不做
- 16. 如果代码没有做任何事情,它的值是否有效?它做了什么?
- 17. 如何在没有http会话的情况下使用CDI- @ SessionScoped
- 18. 如何在使用情况下在什么情况下使用tsql?
- 19. 与做,而为什么在这种情况下值的变化?
- 20. 如果代码在没有它的情况下工作,为什么要使用自我?
- 21. 垃圾收集器在这种情况下会做什么?
- 22. 在这种情况下,Ext.Callback会做什么?
- 23. 3PC在这种情况下会做什么?
- 24. 在这种情况下for =“power”会做什么?
- 25. 有什么用在这种情况下
- 26. 如果没有GPS修复,下列代码会做什么?
- 27. 在什么情况下AppDomain.DoCallback()会失败?
- 28. 在什么情况下会http.ListenAndServe返回
- 29. ConcurrentBag.TryTake()在什么情况下会失败?
- 30. 如果在JVM仍在使用JVM的情况下更新Jar,会发生什么情况?
你怎么知道它没有价值?那么空串呢? – e0k
[C重复](http://stackoverflow.com/questions/13892191/empty-macro-definition-in-c),在C + +中相同的答案。 – juanchopanza