C中可用的标准预定义MACRO __FILE__显示文件的完整路径.有没有办法缩短路径?我的意思是代替
/full/path/to/file.c
Run Code Online (Sandbox Code Playgroud)
我知道了
to/file.c
Run Code Online (Sandbox Code Playgroud)
要么
file.c
Run Code Online (Sandbox Code Playgroud) 传统上,避免C++中多个头部包含的标准和可移植方法是使用#ifndef - #define - #endif
预编译器指令方案,也称为宏保护方案(参见下面的代码片段).
#ifndef MY_HEADER_HPP
#define MY_HEADER_HPP
...
#endif
Run Code Online (Sandbox Code Playgroud)
然而,在大多数实现/编译器中(见下图),有一个更"优雅"的替代方案,其功能与调用的宏保护方案相同#pragma once
.#pragma once
与宏保护方案相比具有几个优点,包括更少的代码,避免名称冲突,有时提高编译速度.
做了一些研究,我意识到尽管#pragma once
几乎所有已知的编译器都支持指令,但是指令是否#pragma once
是C++ 11标准的一部分还是存在紊乱.
#pragma once
指令是否属于C++ 11标准的一部分吗?#pragma once
)的优点/缺点,那也是很好的.我正在阅读linux内核,我发现了很多像这样的宏:
#define INIT_LIST_HEAD(ptr) do { \
(ptr)->next = (ptr); (ptr)->prev = (ptr); \
} while (0)
Run Code Online (Sandbox Code Playgroud)
为什么他们使用这个而不是简单地在{}中定义它?
我刚开始使用Qt并注意到所有示例类定义都将宏Q_OBJECT
作为第一行.这个预处理器宏的目的是什么?
是否有一个很好的Eclipse插件用于录制和播放宏?
我试过这个,但它没有给我带来任何好处 - 好像它还没有为黄金时间做好准备.
我知道编辑器模板,但我正在寻找可以用来记录我的击键然后对一大堆文本应用多次的东西.
这似乎是IDE中的一个奇怪的漏洞.我错过了一些内置设施吗?
我录制了一个我想与我的同事分享的宏.
这些录制的宏保存在哪个位置,以便我可以将其添加到他的机器中?
如果感兴趣,宏用于获取值列表并添加引号和逗号,以便可以在WHERE
SQL查询(WHERE x IN ('value1','value2','value3')
)的子句中使用它.
我正在编写一个跨平台的代码,它应该在linux,windows,Mac OS上编译.在窗户上,我必须支持视觉工作室和mingw.
有一些特定于平台的代码,我应该放在#ifdef .. #endif
环境中.例如,这里我放置了win32特定代码:
#ifdef WIN32
#include <windows.h>
#endif
Run Code Online (Sandbox Code Playgroud)
但是我如何识别linux和mac OS?我应该使用什么定义名称(或等)?
如何通过宏检测设备模型?我曾经使用过这样的东西但模拟器上的结果总是IS_IPHONE_5
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#define IS_IPHONE_5 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 568.0)
#define IS_IPHONE_6 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 667.0)
#define IS_IPHONE_6PLUS (IS_IPHONE && [[UIScreen mainScreen] nativeScale] == 3.0f)
#define IS_IPHONE_6_PLUS (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 736.0)
#define IS_RETINA ([[UIScreen mainScreen] scale] == 2.0)
Run Code Online (Sandbox Code Playgroud)