c - c中的内联函数
问题描述
我有用于对数组进行排序的内联 c 交换函数,但在编译时它给出了交换引用未定义的错误。通过删除它可以工作的交换;代码有什么问题
inline void swap(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
void sort(int ar[])
{
int length = sizeof(ar) / sizeof(int);
for(int i = 0; i < length; i++)
{
for(int j = i; j < length; j++)
{
if(ar[j] < ar[i])
{
swap(&ar[j], &ar[i]);
}
}
}
}
解决方案
int length = sizeof(ar) / sizeof(int);
传递数组的长度,而不是尝试做某事(这不起作用)。
删除inline
,它不相关并导致您的问题。如果编译器可以优化它,它将内联它,否则它只是你给编译器的一个建议,仅此而已。
推荐阅读
- swift - 应用结构保存应用程序信息时遇到问题
- javascript - 通过phantomjs获取url片段
- hive - Hive (1.1.0) - 在将数据加载到具有动态分区的 RC 表时获取小文件
- android - 使用终端构建 kotlin 到 apk
- android - 如何从 React Native expo 应用程序中的 fetch 接收的数据中获取 base64 字符串?
- python - Login_Required 装饰器在 django 中无法正常工作
- c# - 如何在没有异步方法的情况下从 api 下载 pdf 文件
- collision - 当 Kinematic Body 3d (godot) 与网格图、静态体或其他运动体发生碰撞时,如何反弹 Kinematic Body 3d (godot)?
- asp.net-core - 尝试激活“Domain.EntityMaterializerSource”时无法解析“Domain.IBlobModelCache”类型的服务
- c++ - 不能在 cmake 脚本中包含 googletest