-- Code completion and automatic code formatting;
-- Debugging with breakpoints;
-- Offline code execution, file I/O, interactive input and output, and running multiple programs;
-- Project references;
-- Nested project folders;
-- Local learning notes with rich text editing and links to code;
-- Community posts, replies, messages, and project sharing.
C Code Develop is a compact C/C++ development environment with project management, header file references, and local code execution.
For coding enthusiasts and computer science students, it includes data structure projects that you can run and modify.
Write and run C/C++ projects on your device, or export a project to compile and run on your computer. The app provides a local C/C++ runtime; see the in-app API documentation for supported headers, functions, and extensions. For safety reasons, inline assembly and some other unsafe syntax are not supported.
Organize project files in nested folders, and rename, move, or delete files and folders. Build artifacts appear directly in the project.
Keep local learning notes with notebooks, search, images, rich text editing, and automatic saving. Write the title and body in one editor. Open linked code locations from notes on the home screen, or view and create linked notes from the current code file.
Browse and publish Community posts, reply to discussions, view messages and profiles, and share images, videos, and projects.
1. The editor supports code completion, automatic formatting, and long-press access to documentation.
2. The terminal supports stdin and stdout. Programs can use fopen() for file I/O within the project.
I am using your app to compile C code and I have encountered a critical bug regarding pointer arithmetic and array memory addressing.Device: iPhone 12 ProiOS Version: iOS 17.2Description: According to the C standard, if a is declared as int a[5], the expression &a + 1 should advance the pointer by the size of the entire array (i.e., sizeof(a), which is 20 bytes). However, in your compiler/interpreter environment, &a + 1 evaluates to the exact same memory address as a and &a (0 byte offset).This causes subsequent pointer calculations to read out-of-bounds memory.Steps to Reproduce: Please run the following standard C code in your app:#include "stdio.h"int main(int argc, char **argv) { int a[5] = {1, 2, 3, 4, 5}; int *p = (int *)(&a + 1); printf("sizeof(a) = %zu bytes\n", sizeof(a)); printf("Address a = %p\n", (void*)a); printf("Address &a + 1 = %p\n", (void*)(&a + 1)); printf("Address p - 1 = %p\n", (void*)(p - 1)); printf("Output: %d %d\n", *(a + 1), *(p - 1)); return 0;}Expected Result (Standard C Compiler Behavior):Address &a + 1 should be Address a + 20 bytes.Output should be: 2 5Actual Result (Bug Behavior in your app):sizeof(a) correctly returns 20 bytes.However, Address a and Address &a + 1 return the exact same address (e.g., 0x151bd0448).Consequently, p - 1 steps backward before the array starts (e.g., 0x151bd0444), resulting in the output: 2 0This seems to be a bug in how your compiler/interpreter handles the type decay or pointer math for int (*)[5].Looking forward to a fix in the future updates. Thank you for your great work on the app!
1. Added learning notes with rich text, images, and two-way links to code snippets.
2. Bug fixes.