jupyter-c-kernel/example-notebook.ipynb
Xaver K 8e97b754aa
Support for other standards than c11 (#3)
* Finished C89/C90/C95/C99 support. Version can only be switched in kernel or with magics. Might be worth having separate kernels for each standard.

* Added option to link maths library. On by default.

* Fixed empty input error. Now input loops until there is input with length > 0.
2020-04-17 19:27:16 +02:00

151 lines
3.6 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Valid code"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": []
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hello world\n"
]
}
],
"source": [
"#include <stdio.h>\n",
"\n",
"int main() {\n",
" printf(\"Hello world\\n\");\n",
" return 0;\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"But the kernel will also display compilations warnings and errors if we have some. Let's try to remove the `#include <stdio.h>` statement, which if necessary for `printf` to work."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Code generating warnings during compilation"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/var/folders/31/qct57s856n5f0b2r4tgbmn1c0000gn/T/tmp0Qan0v.c:2:5: warning: implicitly declaring library function 'printf' with type 'int (const char *, ...)' [-Wimplicit-function-declaration]\n",
" printf(\"Hello world\\n\");\n",
" ^\n",
"/var/folders/31/qct57s856n5f0b2r4tgbmn1c0000gn/T/tmp0Qan0v.c:2:5: note: include the header <stdio.h> or explicitly provide a declaration for 'printf'\n",
"1 warning generated.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hello world\n"
]
}
],
"source": [
"int main() {\n",
" printf(\"Hello world\\n\");\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can see that the warning are displayed, but the code is still executed."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Code generating errors during compilation"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/var/folders/31/qct57s856n5f0b2r4tgbmn1c0000gn/T/tmpw4Kz3c.c:2:5: warning: implicitly declaring library function 'printf' with type 'int (const char *, ...)' [-Wimplicit-function-declaration]\n",
" printf(\"Hello world\")\n",
" ^\n",
"/var/folders/31/qct57s856n5f0b2r4tgbmn1c0000gn/T/tmpw4Kz3c.c:2:5: note: include the header <stdio.h> or explicitly provide a declaration for 'printf'\n",
"/var/folders/31/qct57s856n5f0b2r4tgbmn1c0000gn/T/tmpw4Kz3c.c:2:26: error: expected ';' after expression\n",
" printf(\"Hello world\")\n",
" ^\n",
" ;\n",
"1 warning and 1 error generated.\n",
"[C kernel] GCC exited with code 1, the executable will not be executed"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": []
}
],
"source": [
"int main() {\n",
" printf(\"Hello world\")\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can see that the errors and warnings are shown, but the code is not executed. The retcode is also added to the end of `stderr`"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "C",
"language": "c",
"name": "c"
},
"language_info": {
"file_extension": ".c",
"mimetype": "text/plain",
"name": "text/x-c++src"
}
},
"nbformat": 4,
"nbformat_minor": 1
}