“警告:初始化使得指针来自整数而没有强制转换”。但我不认为这样做

时间:2009-12-30 13:13:50

标签: c xcode compiler-warnings

我收到一个奇怪的编译警告。它是间歇性的,并不会出现在每个版本中。我得到警告“初始化从没有强制转换的整数中生成指针”,用于以下行:

callbackTable *callbacks = generateLoggingCallback();

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

callbackTable *callbacks;
callbacks = generateLoggingCallback();

函数原型是:

callbackTable *generateLoggingCallback();

,实施是

callbackTable *generateLoggingCallback() { ... }

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

3 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

函数generateLoggingSmfReaderCallback还是generateLoggingCallback?如果原型中的函数名称与您的调用中的函数名称不匹配,那么奇怪的是,您不会在每个构建中收到警告。