在C++中通常用某种前缀命名成员变量来表示它们是成员变量而不是局部变量或参数.如果你来自MFC背景,你可能会使用m_foo.我myFoo偶尔也见过.
C#(或者可能只是.NET)似乎建议只使用下划线,如_foo.这是否允许C++标准?
同时使用带有-std = c11的gcc和带有-std = c ++ 14的g ++.
例如,对于一个名为src/dir/Hello.cxx它的文件,它应该扩展为例如:
const char basename[] = "Hello";
Run Code Online (Sandbox Code Playgroud)
要么
const char basename[] = getStaticBasename(__FILE__);
Run Code Online (Sandbox Code Playgroud)
如何getStaticBasename()是一个宏(对于C源)或constexpr函数(对于C++源),其结果为"Hello".
我必须避免__FILE__在运行时拆分字符串,因为路径和后缀不能以任何方式编译到可执行文件中.
解决方案必须不依赖于大型库,例如boost.
因为我没有makefile,所以在我的情况下不能使用这样的解决方案.
有人有解决方案吗?
编辑2015-07-02:
#include <Joe/Logger.h>在后面的调用中,例如LOG_DEBUG(...)我将隐含地使用自动生成的"通用区域标识符".JOE_LOG_FILE_REGION(Hello);(之后#include <Joe/Logger.h>)LOG_DEBUG(...).