代码之家  ›  专栏  ›  技术社区  ›  Joe

“警告:初始化使指针从整数开始,而不进行强制转换”。但我不认为

  •  3
  • Joe  · 技术社区  · 15 年前

    我收到一个奇怪的编译警告。它是间歇性的,并不是每次都出现。我收到以下行的警告“初始化使指针从整数变为不带强制转换的指针”:

    callbackTable *callbacks = generateLoggingCallback();
    

    为了完整性,这给出了相同的结果

    callbackTable *callbacks;
    callbacks = generateLoggingCallback();
    

    其功能原型是:

    callbackTable *generateLoggingCallback();
    

    实施是

    callbackTable *generateLoggingCallback() { ... }
    

    所以,我不太确定是什么问题。思想?

    3 回复  |  直到 15 年前
        1
  •  7
  •   nothrow    15 年前

    如果是纯C,是否有关于“未知”函数的警告?如果是,则编译器决定未知函数返回int,然后继续..检查是否包含正确的头,并在使用函数之前声明该函数。

        2
  •  2
  •   Joe    15 年前

    找到答案,根据 this . 我没有引用包含函数原型的头文件。所以,据我所知,编译器猜测函数的类型签名,并猜测返回类型是默认的 int .

    这一切都有效,因为包含函数的实现文件包含在构建和返回类型中(假定为 int )只是放在一个声明为指针的变量中。

        3
  •  0
  •   Tarydon    15 年前

    函数generateloggingsmfreadercallback还是generateloggingcallback?如果原型中的函数名与调用中的函数名不匹配,那么奇怪的是,您并没有收到每个构建的警告。