3
A
回答
11
不,它们是不同的。
在
#define A;
A
和;
是两个不同的令牌。 A
是宏名称,;
是它的定义。所以你可以,如果你真的想,写:
printf("Hello, world\n")A
,这将是相当于
printf("Hello, world\n");
(但请不要这么做。)
由于唯一A
是指在#ifdef
中,你所做的只是测试它是否已被定义,不管如何定义。分号无关紧要,因为您不使用分号。
正如风格和清晰度的问题,你应该始终有一个宏的名称及其定义之间的空间:
#define A ;
这是,如果扩张的第一个标记是(
角色尤为重要。如果它紧跟在宏名称之后,那么就有一个类似于函数的宏定义(宏需要参数)。如果宏名称和(
之间有空格,(
只是宏扩展的一部分。
说到分号,一个常见的错误是包括宏定义不必要分号:
#define THE_ANSWER 42;
...
printf("The answer is %d\n", THE_ANSWER);
由于分号是宏定义的一部分,这将扩展为:
printf("The answer is %d\n", 42;);
这是一个语法错误。
相关问题
- 1. 在makefiles中忽略(@)符号
- 2. 忽略符号
- 3. 在C中忽略异常#
- 4. 解析csv文件,忽略引号中逗号的逗号c#
- 5. Firefox忽略CSS逗号分隔的类
- 6. dimple tickFormat忽略分组逗号
- 7. 忽略SVN忽略...可能吗?
- 8. 忽略逗号CIN
- 9. 如何忽略标点符号c#
- 10. 如何通过忽略逗号c#来拆分字符串?
- 11. 在mysql搜索中忽略撇号
- 12. 在ElasticSearch中忽略撇号(所有权)
- 13. 在array_map中忽略逗号与str_getcsv?
- 14. SCons:GCC忽略-c
- 15. 忽略ctrl-c
- 16. 在Talend中导入CSV双引号分隔列被忽略
- 17. 在Ruby中拆分字符串,忽略括号内容?
- 18. PROC被忽略的SQL宏/宏中的SQL /变量
- 19. 在makefile中忽略扩展吗?
- 20. .append()在python中会被忽略吗?
- 21. 忽略在Python线分割
- 22. can bazaar可以忽略分支中已存在的文件吗?
- 23. Nuget版本控制忽略内部编号SemVer的符号吗?
- 24. C++ seekg忽略文件的一部分?
- 25. Fgets在C编程中运行一次后被忽略了吗?
- 26. ctag忽略C++中的类
- 27. 忽略在regex.replace中区分大小写?
- 28. 忽略“断管”信号
- 29. SVN - 忽略符号链接
- 30. 你怎么忽略逗号
你有没有mesn printf(“答案是%d \ n”,42;);'最后一个例子? –
@EnzoFerber:的确如此,谢谢! –
@凯瑟汤普森为什么A;将不会被视为一个整体的宏名称? – Renjie