【问题标题】:Parameter type and number checking in cc中的参数类型和编号检查
【发布时间】:2013-04-09 10:14:39
【问题描述】:

我希望添加一项检查以确保始终使用正确数量的参数调用以下函数并且它们的类型正确。解决这个问题的最佳方法是什么?

例如

int differance(int *a, int *b)
{
 //Work out difference
}

谢谢

【问题讨论】:

  • 你的意思是你传递了两个数组,并且想确保它们的大小相同?
  • 不,我想确保它们都是 int 并且只传递了 2 个参数
  • 你的原型让编译器这样做

标签: c function parameters


【解决方案1】:

编译器会为你做这些。

如果你声明一个函数有两个参数,你不能用更少或更多的参数来调用它,否则你会得到一个错误。

如果您尝试将指针传递给 int 以外的其他对象,那么编译器至少会警告您,甚至可能给您一个错误。

【讨论】:

    【解决方案2】:

    为了确保您的函数调用与您的函数定义匹配:

    • 对于在单个源文件中定义和使用的函数,请在使用之前声明或定义该函数。
    • 对于跨多个源文件定义和使用的函数,在头文件中声明函数(名称以 .h 结尾)并使用#include 将该头文件包含在定义或使用该函数的每个源文件中。 #include 应该在函数的任何定义或使用之前。
    • 检查您的编译器设置并确保针对缺少函数原型和不匹配的函数原型打开警告。
    • 如果您的编译器有此类警告,请为危险的隐式转换打开警告。
    • 如果可以避免,请不要将参数声明为“void *”。通常,您希望保留类型信息,以便编译器可以检查它。

    【讨论】:

      猜你喜欢
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-06
      • 1970-01-01
      • 1970-01-01
      • 2010-11-02
      • 1970-01-01
      相关资源
      最近更新 更多