55得票7回答
如何将预定义宏__DATE__和__TIME__作为两个整数使用,然后转换为字符串?

我想在编译时使用__ DATE __和__ TIME__作为整数来为我的代码提供自动化版本。#define STRINGIZER(arg) #arg #define STR_VALUE(arg) STRINGIZER(arg) #define DATE_as_int_str...

41得票6回答
如何使用#pragma message()让消息指向文件(行号)?

为了在我的代码中添加“待办事项”,我想在编译器输出中放置一条消息。 我希望它看起来像这样:c:/temp/main.cpp(104): TODO - add code to implement this 为了使用Visual Studio的构建输出功能,通过双击来导航到相应的行,需要进行如下设...

26得票2回答
这个 #ifdef __GNUC__ 是关于什么的?

我在libmagic代码中找到了这些行。它们是什么意思? #ifdef __GNUC__ __attribute__((unused)) #endif 什么是 __GNUC__? 它似乎检查是否安装了GCC。 __attribute__((unused))是什么? 这里有一段代码片段...

19得票5回答
在编译时检测ICC和GCC

如何在编译时检测我是否正在使用gcc或icc? (我很困惑地发现icc定义了__GNUC__ - 甚至还有__GNUC_MINOR__和__GNUC_PATCHLEVEL__!为什么?)

12得票3回答
#error in Swift(如何标记编译时错误)

什么是传统 C 风格 #error 关键字的 Swift 替代方法? 我需要在预定义失败时引发编译时错误:#if CONFIG1 ... #elseif CONFIG2 ... #else #error "CONFIG not defined" #endif

11得票1回答
__LINE__指令的一致性是否有任何保证?

GCC 9最近在某些情况下改变了__LINE__指令的行为。下面的程序说明了这种变化: #include <stdio.h> #define expand() __LINE__ int main() { printf("%d\n",expand( ...

9得票1回答
如何在Code::Blocks中设置预定义宏

有没有一种方法可以为我本地安装的Code::Blocks设置一些预定义的宏。 具体而言,我希望仅在我的电脑上编译某些代码块,而不是在我发送代码的任何地方都进行编译。实现这一目标的一种方法如下: #define MYPC #ifdef MYPC //do something #else ...

9得票5回答
如何编写一个“clamp”/“clip”/“bound”宏来返回给定范围内的值?

我经常发现自己写下这样的内容: int computedValue = ...; return MAX(0, MIN(5, computedValue)); 我希望能够将这段代码转化为单行宏。它必须像现有的系统宏MIN和MAX一样没有副作用,并且应该适用于与MIN和MAX相同的数据类型。...