When a table of floating pointer numbers that contains a header row is set as a variable to a C source block, the generated header file contains an invalid return type, causing the program to not compile. For example, if I have a table that looks like #+NAME: tbl-doubles-org-bug-report #+begin_src C :includes :results table :colnames '("i" "val")   for (int i = 0; i < 5; i++) {     printf("%f %f\n", (double)i, i * 2.0);   } #+end_src #+RESULTS: tbl-doubles-org-bug-report |   i | val | |-----+-----| | 0.0 | 0.0 | | 1.0 | 2.0 | | 2.0 | 4.0 | | 3.0 | 6.0 | | 4.0 | 8.0 | And then attempt to include that table as a variable called data #+begin_src C :includes stdio.h :var data=tbl-doubles-org-bug-report   printf("No errors!"); #+end_src Nothing is printed, and *Org-Babel Error Output* will display /tmp/babel-NQHi51/C-src-lsA892.c: In function ‘data_h’: /tmp/babel-NQHi51/C-src-lsA892.c:24:65: error: incompatible types when returning type ‘double’ but ‘const char *’ was expected    24 | const char* data_h (int row, const char* col) { return data[row][get_column_num(2,data_header,col)]; }       |                                                        ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /bin/bash: line 1: /tmp/babel-NQHi51/C-bin-90Zk27: Permission denied If we look in the /tmp file mentioned, it's easy to see the inconsistency. double data[5][2] = { {0.000000,0.000000}, {1.000000,2.000000}, {2.000000,4.000000}, {3.000000,6.000000}, {4.000000,8.000000} }; const int data_rows = 5; const int data_cols = 2; int get_column_num (int nbcols, const char** header, const char* column) {   int c;   for (c=0; c