# C sa Maguyva: mga call graph para sa systems at embedded code

Canonical source: https://maguyva.ai/fil/languages/c

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Sinusuportahan ng Maguyva ang C gamit ang AST, mga symbol at graph, para ma-trace ng mga AI agent ang mga function, struct, include at tumatawag sa systems, firmware at library code.

## Snapshot ng support

- Antas: Support para sa AST at mga simbolo
- Programming
- Mga extension: .c, .h
- Tunay na AST parsing para sa syntax-aware search at structural context.
- Pinapagana ng mga named symbol ang semantic lookup at cross-reference. Available ang graph navigation kapag naka-enable ang pagkuha ng mga ugnayan.
- Nag-aambag ang wikang ito ng mga simbolo at ugnayan sa graph-aware search; nag-iiba ang mga sinusuportahang uri ng edge ayon sa mga native construct nito.
- Available ang AST parsing at symbol extraction.

## Pinakabagay

- Mga firmware, embedded at operating-system team, kung saan ang maliit na pagbabago sa isang shared function ay puwedeng umabot sa mga hardware path.
- Mga matagal nang C library na may public header, export macro at maraming internal na translation unit.
- Mga agent-assisted na review kung saan ang tanong ay: “sino ang tumatawag dito, at sa aling mga header?”

## Mga workflow ng agent

- Hanapin ang bawat tumatawag sa isang function bago magbago ang signature o error handling nito.
- I-map ang mga file na nag-i-include ng isang header at ang mga struct na ginagamit nila.
- I-trace ang isang request mula sa interrupt handler o entry point sa mga function na naaabot nito.

## Bakit kailangan ng C ng call graph, hindi grep

Walang class o module ang C para ayusin ang code. Nasa mga function call, header at struct ang structure, at puwedeng lumabas ang parehong pangalan sa mga comment, macro at string literal. Binabalot ng mga export at annotation macro ang mga declaration, kaya natitisod ang mga tool na purong C lang ang kayang i-parse. Para sa isang agent, ang call graph ang ligtas na unang hakbang.

Binubuo ng Maguyva ang graph na ito, para makita ng agent kung saan umaabot ang isang function at kung ano ang umaabot dito bago ito magmungkahi ng pagbabago.

## Ano ang kinukuha ng Maguyva mula sa C

Sakop ng Maguyva ang `.c` at `.h`. Kinukuha ang mga function definition bilang symbol, at puwedeng piliin ang mga struct at union bilang type definition sa structural search. Nagiging import relationship ang mga `#include` directive.

Mina-mask bago i-parse ang mga export at visibility macro (mga pattern tulad ng `FOO_API`, `DLLEXPORT` o `LIBEXPORT`) at ang mga thread-safety annotation macro (tulad ng `GUARDED_BY` at `REQUIRES`), kaya pina-parse bilang normal na declaration ang mga binabalot nila. Pina-parse ang body ng mga function-like macro; hindi ang body ng mga object-like macro.

Itinatala ng graph ang mga call, include, instantiation gamit ang compound literal, type reference, read at write, at control flow. Mga 124 C standard-library call (`printf`, `malloc`, `free`, `memcpy`, `strlen` at mga katulad nito) ang nifi-filter mula sa mga relationship, para lumitaw ang code ng project.

## Mga halimbawang agent prompt

- "Sino ang tumatawag sa `uart_write`, direkta man o sa pamamagitan ng ibang function?" (`dependency_search` na incoming)
- "Aling mga file ang nag-i-include ng `config.h`, at aling mga struct nito ang ginagamit nila?" (`dependency_search`, tapos `find_symbol`)
- "Ipaliwanag kung paano umaabot ang isang packet mula sa receive interrupt papunta sa protocol parser." (`get_task_context`)

## Mga kilalang limitasyon

- Walang class o exception ang C, kaya minarkahang hindi applicable ang mga relationship na inheritance, interface implementation, override, throw at catch.
- Lumalabas ang `.h` sa mga extension list ng C, C++ at Objective-C, kaya hinahati sa mga profile na ito ang mga header sa mga multi-language na tree.
- Hindi graph edge ang mga call sa mga na-filter na standard-library function. Gamitin ang `text_pattern_search` kapag kailangan mo ang bawat `malloc` o `memcpy`.

## Mga susunod na hakbang

Mag-connect ng repository gamit ang [quickstart](/fil/docs/quickstart), tapos tingnan ang support matrix sa [compatibility page](/fil/docs/compatibility). Para sa C++ code sa parehong tree, basahin ang [gabay sa C++](/fil/languages/cpp).

## Mga detalye ng engine

- Sakop ng C support ang `.c` at `.h`. Mga symbol ang mga function definition, mga type definition ang mga struct at union, at nagiging import relationship ang `#include`.
- Mina-mask bago i-parse ang mga export, visibility at thread-safety annotation macro, kaya napa-parse ang mga binalot na declaration. Pina-parse ang body ng function-like macro; hindi ang object-like.
- Mga 124 standard-library call tulad ng `printf`, `malloc` at `memcpy` ang nifi-filter. Minarkahang hindi applicable ang mga inheritance, override at exception relationship.

## Mga kapaki-pakinabang na MCP entry point

- `find_symbol`: Gamitin kasama ang pangalan ng function o struct kapag kailangan mo ang definition at bawat reference.
- `dependency_search`: Gumamit ng incoming traversal sa isang shared function bago magbago ang signature o error handling nito.
- `get_task_context`: Gamitin para sa mga prompt tulad ng “ipaliwanag kung paano umaabot ang isang packet mula sa receive interrupt papunta sa protocol parser”.
