-
Notifications
You must be signed in to change notification settings - Fork 73
Warnings for c-run-time.c #1650
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
1. Declare Function Prototypes
Example: // Function prototype declaration
void myFunction(int arg1, char arg2);
int main() {
myFunction(10, 'a'); // Now the compiler knows the prototype
return 0;
}
// Function definition
void myFunction(int arg1, char arg2) {
// Function implementation
} 2. Include Header Files
Example: // myheader.h
#ifndef MYHEADER_H
#define MYHEADER_H
void myFunction(int arg1, char arg2); // Function prototype
#endif // main.c
#include "myheader.h" // Include the header file
int main() {
myFunction(10, 'a'); // Now the compiler knows the prototype
return 0;
} 3. Check for Implicit Function Declarations
Example of Implicit Declaration (Bad): int main() {
myFunction(10, 'a'); // No prototype declared
return 0;
}
void myFunction(int arg1, char arg2) {
// Function implementation
} Fix: void myFunction(int arg1, char arg2); // Add prototype
int main() {
myFunction(10, 'a'); // Now the compiler knows the prototype
return 0;
}
void myFunction(int arg1, char arg2) {
// Function implementation
} 4. Use Modern C Standards
Compiler Flag Example: clang -std=c17 -Wall -Wextra -Werror c-run-time.c -o output
5. Review the Code for Legacy Issues
6. Automated Tools
Example with clang-tidy c-run-time.c --fix-errors --checks=* By following these steps, you should be able to resolve the warnings and ensure your code complies with modern C standards. |
fraya
added a commit
to fraya/opendylan
that referenced
this issue
May 2, 2025
Creates different arities for DFLN. typedef dylan_value (*DLFN0)(void); typedef dylan_value (*DLFN1)(dylan_value); typedef dylan_value (*DLFN2)(dylan_value, dylan_value); ... etc Changing DLFN to a union typedef union { void* raw; DLFN0 mep0; DLFN1 mep1; DLFN2 mep2; DLFN3 mep3; DLFN4 mep4; DLFN5 mep5; DLFN6 mep6; DLFN7 mep7; DLFN8 mep8; DLFN9 mep9; DLFN10 mep10; DLFN64 mep64; } DLFN; Then rewrite the call logic using the correct type per arity. switch (teb->argument_count) { case 0: return (mep.mep0)(); case 1: return (mep.mep1)(v[0]); ... Closes dylan-lang#1650
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
There are many many warnings of this type for c-run-time.c:
c-run-time.c:1032:20: warning: passing arguments to a function without a prototype is deprecated in all versions of C and is not supported in C2x [-Wdeprecated-non-prototype]
The text was updated successfully, but these errors were encountered: