GCC
#pragma GCC diagnostic [action] [warning-name]
#pragma: Directive for the compilerGCC diagnostic: Indicates a diagnostic command specific to GCCaction: What to do:ignored,warning, orerrorwarning-name: The name of the warning, e.g.-Wunused-variable,-Wreturn-type, etc.
The function broken_function has a return type of int, but it does not contain a return statement.
This means the function doesn't return a value, even though its declared return type requires one — which violates the function's contract.
main.c
1234567891011#include <stdio.h> int broken_function() { // warning: no return statement in function returning non-void [-Wreturn-type] } int main() { int result = broken_function(); printf("Result: %d\n", result); return 0; }
The directive #pragma GCC diagnostic error "-Wreturn-type" changes the compiler's behavior so that a warning about a missing return statement in a function with return type int is treated as a compilation error instead of just a warning.
main.c
1234567891011121314#include <stdio.h> #pragma GCC diagnostic push #pragma GCC diagnostic error "-Wreturn-type" int broken_function() { // error: no return statement in function returning non-void [-Werror=return-type] } #pragma GCC diagnostic pop int main() { int result = broken_function(); printf("Result: %d\n", result); return 0; }
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Can you explain how to use these GCC diagnostic pragmas in my code?
What are some common use cases for changing warning levels with these directives?
Can you give an example of suppressing a specific warning temporarily?
Awesome!
Completion rate improved to 5.56
GCC
Scorri per mostrare il menu
#pragma GCC diagnostic [action] [warning-name]
#pragma: Directive for the compilerGCC diagnostic: Indicates a diagnostic command specific to GCCaction: What to do:ignored,warning, orerrorwarning-name: The name of the warning, e.g.-Wunused-variable,-Wreturn-type, etc.
The function broken_function has a return type of int, but it does not contain a return statement.
This means the function doesn't return a value, even though its declared return type requires one — which violates the function's contract.
main.c
1234567891011#include <stdio.h> int broken_function() { // warning: no return statement in function returning non-void [-Wreturn-type] } int main() { int result = broken_function(); printf("Result: %d\n", result); return 0; }
The directive #pragma GCC diagnostic error "-Wreturn-type" changes the compiler's behavior so that a warning about a missing return statement in a function with return type int is treated as a compilation error instead of just a warning.
main.c
1234567891011121314#include <stdio.h> #pragma GCC diagnostic push #pragma GCC diagnostic error "-Wreturn-type" int broken_function() { // error: no return statement in function returning non-void [-Werror=return-type] } #pragma GCC diagnostic pop int main() { int result = broken_function(); printf("Result: %d\n", result); return 0; }
Grazie per i tuoi commenti!