相关疑难解决方法(0)

C中的MIN和MAX

在C中的位置MINMAX定义,如果有的话?

实现这些的最佳方式是什么,尽可能通用和安全?(首选编译器扩展/内置主流编译器.)

c max min c-preprocessor

265
推荐指数
11
解决办法
67万
查看次数

在C中使用null语句

null语句的典型用法是什么

;
Run Code Online (Sandbox Code Playgroud)

在C?

我知道它基本上用于跳过编译器所期望的表达式,但是在这里我只对这种用例的实际例子感兴趣.

c

24
推荐指数
4
解决办法
1万
查看次数

如何在C中实现通用宏?

FUNC(param);
Run Code Online (Sandbox Code Playgroud)

如果paramchar *,派遣func_string.

什么时候int发送到func_int

我认为可能有一个解决方案,因为变量类型在编译时是已知的.

c macros types generic-programming

10
推荐指数
3
解决办法
5567
查看次数

宏在linux内核中有一个不寻常的行?

我正在阅读这篇文章http://www.ibm.com/developerworks/linux/library/l-gcc-hacks/,第一段代码就是这个,显然是从linux内核中获取的:

#define min(x, y) ({                \
    typeof(x) _min1 = (x);          \
    typeof(y) _min2 = (y);          \
    (void) (&_min1 == &_min2);      \
    _min1 < _min2 ? _min1 : _min2; })
Run Code Online (Sandbox Code Playgroud)

现在为什么他们需要这(void) (&_min1 == &_min2);条线?

c macros

9
推荐指数
0
解决办法
400
查看次数

GCC:禁止隐式bool-> int转换

是否有任何gcc标志禁止隐式"bool - > int"转换?

我想用这段代码得到任何警告:

void function( int value, bool flag ) { }

int main()
{
  int a = 123;
  bool flag = true;

  //oops, a common mistake
  function( flag, a );
}
Run Code Online (Sandbox Code Playgroud)

c++ gcc

7
推荐指数
2
解决办法
1644
查看次数

为什么在min的这个实现中比较地址?

分功能的实现在这里做的:

#define min(x, y) ({                \
    typeof(x) _min1 = (x);          \
    typeof(y) _min2 = (y);          \
    (void) (&_min1 == &_min2);      \
_min1 < _min2 ? _min1 : _min2; })
Run Code Online (Sandbox Code Playgroud)

第四行有什么意义?

为什么这样做(void) (&_min1 == &_min2);

c

7
推荐指数
1
解决办法
85
查看次数

Linux 内核 `min` 宏

我正在查看Linux内核源代码(kernel.h),我发现了这个min函数的宏:

#ifndef max
#define max(x, y) ({                \
    typeof(x) _max1 = (x);          \
    typeof(y) _max2 = (y);          \
    (void) (&_max1 == &_max2);      \
    _max1 > _max2 ? _max1 : _max2; })
#endif
Run Code Online (Sandbox Code Playgroud)

现在我想知道(void) (&_max1 == &_max2);line 有什么作用?

c macros

3
推荐指数
1
解决办法
5309
查看次数

自旋锁初始化函数

要在内核 v4.19-rc5 中初始化自旋锁,必须使用spin_lock_init如下定义的宏:

#define spin_lock_init(_lock)               \
do {    \
       spinlock_check(_lock);               \
       raw_spin_lock_init(&(_lock)->rlock);     \
} while (0)
Run Code Online (Sandbox Code Playgroud)

该函数spinlock_check(_lock)只是返回&lock->rlock本文解释说:

spinlock_check 的实现非常简单,这个函数只是返回给定自旋锁的 raw_spinlock_t 以确保我们得到完全正常的原始自旋锁
我不明白这个函数如何执行检查。我期待ifcckeck 函数中的一些语句。抱歉,我是内核编程新手。

c mutex linux-kernel

1
推荐指数
1
解决办法
3250
查看次数

标签 统计

c ×7

macros ×3

c++ ×1

c-preprocessor ×1

gcc ×1

generic-programming ×1

linux-kernel ×1

max ×1

min ×1

mutex ×1

types ×1