mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2025-03-22 02:31:28 +00:00
Implemented platform[safe, neutral], compiler[safe, neutral] and C version[safe, neutral] <stdbool.h>. M$ Visual Studio doesn't provide support for C99
This commit is contained in:
parent
1fd2666fba
commit
4c55dba10d
2 changed files with 38 additions and 13 deletions
33
gmqcc.h
33
gmqcc.h
|
@ -27,6 +27,30 @@
|
|||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
|
||||
/*
|
||||
* We cannoy rely on C99 at all, since compilers like MSVC
|
||||
* simply don't support it. We define our own boolean type
|
||||
* as a result (since we cannot include <stdbool.h>). For
|
||||
* compilers that are in 1999 mode (C99 compliant) we can use
|
||||
* the language keyword _Bool which can allow for better code
|
||||
* on GCC and GCC-like compilers, opposed to `int`.
|
||||
*/
|
||||
#ifndef __cplusplus
|
||||
# ifdef false
|
||||
# undef false
|
||||
# endif /* !false */
|
||||
# ifdef true
|
||||
# undef true
|
||||
# endif /* !true */
|
||||
# define false (0)
|
||||
# define true (1)
|
||||
# define bool _Bool
|
||||
# if __STDC_VERSION__ < 199901L && __GNUC__ < 3
|
||||
typedef int _Bool
|
||||
# endif
|
||||
# endif /* !__cplusplus */
|
||||
|
||||
/*
|
||||
* stdint.h and inttypes.h -less subset
|
||||
* for systems that don't have it, which we must
|
||||
|
@ -508,8 +532,9 @@ enum {
|
|||
COMPILER_QCCX, /* qccx QuakeC */
|
||||
COMPILER_GMQCC /* this QuakeC */
|
||||
};
|
||||
extern int opts_debug;
|
||||
extern int opts_memchk;
|
||||
extern int opts_darkplaces_stringtablebug;
|
||||
extern int opts_omit_nullcode;
|
||||
extern bool opts_debug;
|
||||
extern bool opts_memchk;
|
||||
extern bool opts_darkplaces_stringtablebug;
|
||||
extern bool opts_omit_nullcode;
|
||||
extern int opts_compiler;
|
||||
#endif
|
||||
|
|
18
main.c
18
main.c
|
@ -26,11 +26,11 @@ typedef struct { char *name, type; } argitem;
|
|||
VECTOR_MAKE(argitem, items);
|
||||
|
||||
/* global options */
|
||||
int opts_debug = 0;
|
||||
int opts_memchk = 0;
|
||||
int opts_compiler = COMPILER_GMQCC;
|
||||
int opts_darkplaces_stringtablebug = 0;
|
||||
int opts_omit_nullcode = 0;
|
||||
bool opts_debug = false;
|
||||
bool opts_memchk = false;
|
||||
bool opts_darkplaces_stringtablebug = false;
|
||||
bool opts_omit_nullcode = false;
|
||||
int opts_compiler = COMPILER_GMQCC;
|
||||
|
||||
static const int usage(const char *const app) {
|
||||
printf("usage:\n");
|
||||
|
@ -73,8 +73,8 @@ int main(int argc, char **argv) {
|
|||
case 'a': items_add((argitem){util_strdup(&argv[1][2]), 1}); break; /* assemble */
|
||||
case 'i': items_add((argitem){util_strdup(&argv[1][2]), 2}); break; /* includes */
|
||||
default:
|
||||
if (!strncmp(&argv[1][1], "debug" , 5)) { opts_debug = 1; break; }
|
||||
if (!strncmp(&argv[1][1], "memchk", 6)) { opts_memchk = 1; break; }
|
||||
if (!strncmp(&argv[1][1], "debug" , 5)) { opts_debug = true; break; }
|
||||
if (!strncmp(&argv[1][1], "memchk", 6)) { opts_memchk = true; break; }
|
||||
if (!strncmp(&argv[1][1], "help", 4)) {
|
||||
return usage(app);
|
||||
break;
|
||||
|
@ -95,11 +95,11 @@ int main(int argc, char **argv) {
|
|||
|
||||
/* code specific switches */
|
||||
if (!strcmp(&argv[1][1], "fdarkplaces-stringtablebug")) {
|
||||
opts_darkplaces_stringtablebug = 1;
|
||||
opts_darkplaces_stringtablebug = true;
|
||||
break;
|
||||
}
|
||||
if (!strcmp(&argv[1][1], "fomit-nullcode")) {
|
||||
opts_omit_nullcode = 1;
|
||||
opts_omit_nullcode = true;
|
||||
break;
|
||||
}
|
||||
return usage(app);
|
||||
|
|
Loading…
Reference in a new issue