This old-style function definition is not preceded by a prototype

news/2024/11/24 2:17:18/

文章目录

    • Intro
    • warning 及解决 截屏
    • 知其然,却不知其所以然

Intro

在 Xcode 14 中随意写了几个C命令行程序,编译运行OK。
但是有以下两种报错:

This old-style function definition is not preceded by a prototype
This function declaration is not a prototype

解决方式见 SOF How to prevent error : this old-style function definition is not preceded by a prototype
在这里插入图片描述adding void in the parentheses helps me eliminate the warning
在圆括号里加void可以避免出现该warning。

对那些没有参数的函数,在其小括号中加一个void即可。

warning 及解决 截屏

在这里插入图片描述
在这里插入图片描述

//
//  main.c
//  function-learn
//
//  Created by wuyujin1997 on 2023/1/22.
//#include <stdio.h>void foo() {printf("foo\n");
}void bar();int main(int argc, const char * argv[]) {foo();bar();return 0;
}void bar() {printf("bar\n");
}

知其然,却不知其所以然

问题解决了。
其实这两行warning的解决方式很容易就能查到。
可是为什么会出现该warning以及为什么加 void 可以避免出现该 warning,我依旧不知道。

先列一下猜想:

  • 对于无参函数的圆括号内的写法,是什么都不写,还是只写一个 void , 应该都是对的。但是区别是在不同的C语言标准下。
  • 使用的C语言编译器的种类加版本影响。

我的 Xcode 14 中使用的 C语言编译器是: Apple clang version 14.0.0 (clang-1400.0.29.202)

wuyujin1997@mac11 ~ % cc --version
Apple clang version 14.0.0 (clang-1400.0.29.202)
Target: arm64-apple-darwin22.2.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
wuyujin1997@mac11 ~ % 

http://www.ppmy.cn/news/883741.html

相关文章

关于ModifyStyleEx无效的问题

在做MFC时&#xff0c;有时候我们需要显示选择一个项目&#xff0c;比如需要标记所选择的图片控件。我们可以用这个函数&#xff1a; BOOLModifyStyleEx ( DWORD dwRemove, DWORD dwAdd, UINT nFlags ) 或者 BOOLModifyStyle ( DWORD dwRemove, DWORD dwAdd, UINT nF…

ModifyStyle

CWnd::ModifyStyle 1.作用 : 调用这个函数修改窗口的风格 2.函数原型: BOOL ModifyStyle ( DWORD dwRemove, DWORD dwAdd, UINT nFlags0 ); 3.参数含义: dwRemove 指定修改时要删除的窗风格。 dwAdd 指定修改时将要增加的窗口风格。 nFlags 该参数将被传给SetWindowPos&#x…

关于ModifyStyle ModifyStyleEx修改自定义控件的问题

继承于MFC控件&#xff0c;比如CStatic CEdit等等&#xff0c;在自定义代码中许多人反映无法更改控件的外观属相&#xff0c;这是因为大部分人没有通知主窗体自定义控件的外观更改了&#xff0c;可以使用下列代码进行更改&#xff1a; ModifyStyle(WS_BORDER,0,SWP_DRAWFRAME);…

ModifyStyle, ModifyStyleEx

1.wtl 中的CListViewCtrl调用ModifyStyle, ModifyStyleEx, 不起作用, 改成 _listCtrl.SetExtendedListViewStyle(_listCtrl.GetExtendedListViewStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES, 0); 参照http://www.cppblog.com/qiaodong/archive/2007/03/19/20153.html…

GetStyle,ModifyStyle,GetExStyle,ModifyStyleEx

要添加或除去窗口的普通风格&#xff0c;可以使用GetStyle()和ModifyStyle()方法来实现 要设置或去除窗口的扩展风格&#xff0c;可以使用GetExStyle()和ModifyStyleEx() 方法实现 1. CWnd::GetExStyle 与 CWnd::ModifyStyle (1) GetExStyle 原型: DWORD GetStyle() const; 作…

谈谈CListCtrl 扩展风格设置方法-SetExtendedStyle和ModifyStyleEx 比较

谈谈CListCtrl 扩展风格设置方法 --------------------------------------SetExtendedStyle和ModifyStyleEx 比较 对于初学者来说&#xff0c;当他需要设定listctrl的扩展风格时&#xff0c;常常想到用ModifyStyleEx 来设定&#xff0c;代码如下&#xff1a; ModifyStyleEx(0…

也谈VC中ModifyStyleModifyStyleEx无法改变控件的Style)

一个View中用到了一个CListCtrl&#xff0c;在OnInitialUpdate函数里面他调用了m_listCtrl.ModifyStyleEx(0, LVS_EX_FULLROWSELECT);但是结果是并没有改变View中这个ListCtrl的效果。 仔细的查阅了MSDN的关于ModifyStyleEx的说明&#xff0c;发现没什么可以的地方&#xff0c;…

ModifyStyle ModifyStyleEx修改自定义控件的问题

//ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW, SWP_DRAWFRAME); //ModifyStyleEx(WS_EX_STATICEDGE|WS_EX_WINDOWEDGE|WS_EX_DLGMODALFRAME,WS_EX_CLIENTEDGE, SWP_DRAWFRAME); //ModifyStyle(WS_BORDER, 0, SWP_DRAWFRAME); WS_EX_APPWINDOW属性 MSDN的解释是&am…