Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Correct recent makeheaders.html documentation update to respect the prohibition of multiple global variables per declaration |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
ba5ab70e96ca7e25d6c4fb3c164f221f |
User & Date: | andygoth 2016-11-07 04:45:23.500 |
Context
2016-11-07
| ||
05:43 | Minor correction to example comment in Fossil coding introduction. ... (check-in: 22a9fba4 user: andybradford tags: trunk) | |
04:45 | Correct recent makeheaders.html documentation update to respect the prohibition of multiple global variables per declaration ... (check-in: ba5ab70e user: andygoth tags: trunk) | |
04:06 | Use disjoint timelines when filtering by the chng timeline query parameter ... (check-in: e7bdbbe4 user: andygoth tags: trunk) | |
Changes
Changes to src/makeheaders.html.
︙ | ︙ | |||
929 930 931 932 933 934 935 | and procedure definitions. It only understands the modern ANSI-C style, and will probably become very confused if it encounters an old K&R function. Therefore you should take care to avoid putting K&R function definitions in your code. </p> | < < < < < < < < < < < < < < < < < < < < > > > > > > > > > > > > > > > > > > > > > > | 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 | and procedure definitions. It only understands the modern ANSI-C style, and will probably become very confused if it encounters an old K&R function. Therefore you should take care to avoid putting K&R function definitions in your code. </p> <p> Makeheaders does not understand when you define more than one global variable with the same type separated by a comma. In other words, makeheaders does not understand this: <pre> int a = 4, b = 5; </pre> The makeheaders program wants every variable to have its own definition. Like this: <pre> int a = 4; int b = 5; </pre> Notice that this applies to global variables only, not to variables you declare inside your functions. Since global variables ought to be exceedingly rare, and since it is good style to declare them separately anyhow, this restriction is not seen as a terrible hardship. </p> <p> Makeheaders does not support defining an enumerated or aggregate type in the same statement as a variable declaration. None of the following statements work completely: <pre> struct {int field;} a; struct Tag {int field;} b; struct Tag c; </pre> Instead, define types separately from variables: <pre> #if INTERFACE struct Tag {int field;}; #endif Tag a; Tag b; /* No more than one variable per declaration. */ Tag c; /* So must put each on its own line. */ </pre> See <a href="#H0008">3.2 What Declarations Get Copied</a> for details, including on the automatic typedef. </p> <p> The makeheaders program processes its source file prior to sending those files through the C preprocessor. Hence, if you hide important structure information in preprocessor defines, makeheaders might not be able to successfully extract the information it needs from variables, functions and procedure definitions. For example, if you write this: |
︙ | ︙ |